选择所选孩子的父母

发布于 2024-10-30 08:41:47 字数 749 浏览 0 评论 0原文

首先,如果这是一个多余的问题,请原谅我。我想您会同意,合理地专门搜索这是一个困难的案例。

我有看起来像

<li class='signature'>
    <span class='label'>Signature:</span>
    <div class='folding'>
        <span class='data'></span>
    </div>
</li>
<li class='issuer'>
    <span class='label'>Issuer:</span>
    <span class='data'></span>
</li>

等的html。

我想使用jquery仅对包含“folding”类的div的任何li执行.addClass,但不对其他li执行。我确信我可以使用巧妙设计的 .each 语句来做到这一点,但我直觉地认为必须有一种方法可以仅使用 jquery 选择器来做到这一点。我已经做到了,

$('li > .moreclick').addClass("arrowable");

但这当然将类添加到跨度中,而不是添加到里中。

我是否被 .each 困住了? (如果是这样,任何关于最佳方法的提示都会很好,但不可否认,这超出了问题的范围)。

谢谢!

First off, forgive me if this is a redundant question. I think you'll agree that it's a difficult case to reasonably specifically search for.

I have html that looks like

<li class='signature'>
    <span class='label'>Signature:</span>
    <div class='folding'>
        <span class='data'></span>
    </div>
</li>
<li class='issuer'>
    <span class='label'>Issuer:</span>
    <span class='data'></span>
</li>

etc etc.

I want to use jquery to do an .addClass only to any li that contains a div of the class "folding", but not to the other lis. I'm sure that I can do this using a cunningly-crafted .each statement, but I kind of feel intuitively that there must be a way to do this using just jquery selectors. I have gotten as far as

$('li > .moreclick').addClass("arrowable");

but that of course adds the class to the span, and not to the li.

Am I stuck with an .each? (and if so, any hints on the best way to do that would be nice, but admittedly outside the scope of the question).

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

满意归宿 2024-11-06 08:41:47

如果 li 始终是绝对父级:

$("div.folding").parent().addClass("new-class")

否则,这将继续搜索层次结构,直到找到 li

$("div.folding").closest("li").addClass("new-class")

[编辑]
迪奥斯拉斯卡的解决方案要好得多。不过,将我的保留在这里以供参考。

If the li is always going to be the absolute parent:

$("div.folding").parent().addClass("new-class")

Otherwise, this will keep searching up the hierarchy until it finds an li:

$("div.folding").closest("li").addClass("new-class")

[edit]
dioslaska's solution is much nicer. Keeping mine here for reference though.

烟酒忠诚 2024-11-06 08:41:47

尝试以下

$('li:has(.folding)').addClass("arrowable");

jQuery 文档

Try the following

$('li:has(.folding)').addClass("arrowable");

jQuery documentation

桃扇骨 2024-11-06 08:41:47

例如:

$('.folding').parent().addClass('arrowable');

//编辑太慢..

for example:

$('.folding').parent().addClass('arrowable');

//edit too slow..

执手闯天涯 2024-11-06 08:41:47

试试这个。

$('li').has('.folding').addClass("arrowable");

try this.

$('li').has('.folding').addClass("arrowable");
沧笙踏歌 2024-11-06 08:41:47

如果您只想检查 li 的直接子代:

$('li:has(> div.folding)').addClass("arrowable");

If you want to check only the direct children of li:

$('li:has(> div.folding)').addClass("arrowable");
旧情勿念 2024-11-06 08:41:47

请尝试这样做:

$("li:has(div.folding)").addClass("new-class")

这将准确选择 li 元素,该元素是具有 'folding' 类的 div 的父元素。

Please try this:

$("li:has(div.folding)").addClass("new-class")

This will selects exactly the li element which is the parent of divs that have class 'folding'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文