jQuery addClass 到每个有 x 个子项的项目?

发布于 2024-12-08 04:15:01 字数 348 浏览 0 评论 0原文

我想为每个有 2 个以上子项的项目添加“anything”类。 不幸的是我的代码不起作用,我想我必须定义(这个)并且可能使用每个,但我不知道如何做到这一点。

这是我的代码:

if ( jQuery('#container .document').children().size() > 2 ) {
     jQuery(this).addClass("anything"); 
}

一个损坏的示例:

http://jsfiddle.net/HHSuM/1/

I want to add class "anything" to every item that has more than 2 children.
Unfortunately my code doesn't work, I guess I have to define (this) and maybe use each, but I'm not sure how to do that.

Here's my code:

if ( jQuery('#container .document').children().size() > 2 ) {
     jQuery(this).addClass("anything"); 
}

An broken example:

http://jsfiddle.net/HHSuM/1/

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

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

发布评论

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

评论(5

謌踐踏愛綪 2024-12-15 04:15:01

您可以使用 filter 将列表限制为具有两个以上子元素的元素。

jQuery('#container .document').filter(function() {
    return this.children.length > 2; //Use just the regular DOM children property in here
}).addClass("anything");

JSFiddle: http://jsfiddle.net/HHSuM/4/

You can use filter to restrict the list to elements with more than two children.

jQuery('#container .document').filter(function() {
    return this.children.length > 2; //Use just the regular DOM children property in here
}).addClass("anything");

JSFiddle: http://jsfiddle.net/HHSuM/4/

憧憬巴黎街头的黎明 2024-12-15 04:15:01

使用 .each() 循环元素:

$('#container .document').each(function() {
  if (this.children.length > 2) {
    $(this).addClass('anything');
  }
});

Loop over the elements with .each():

$('#container .document').each(function() {
  if (this.children.length > 2) {
    $(this).addClass('anything');
  }
});
〆一缕阳光ご 2024-12-15 04:15:01

我认为这是一个有趣的问题,并尝试将 :has():nth-child() 结合使用,但出现语法错误。

// Does NOT work... why?
jQuery('#container .document:has(*:nth-child(3))').addClass('anything');

但是稍微修改一下方法就可以了:

// Nifty!
jQuery('#container .document *:nth-child(3)').parents('.document').addClass('anything');

基本上我们正在寻找具有第三个元素的元素,然后在 DOM 中向上移动。

I thought this was an interesting one, and tried to use :has() in conjunction with :nth-child() but I get a syntax error.

// Does NOT work... why?
jQuery('#container .document:has(*:nth-child(3))').addClass('anything');

But modifying the approach slightly, works:

// Nifty!
jQuery('#container .document *:nth-child(3)').parents('.document').addClass('anything');

Basically we're looking for elements with a 3rd element, then moving up the DOM.

谈情不如逗狗 2024-12-15 04:15:01

使用 .each() 迭代 #container 。文档 元素。

更新了您的 jsfiddle。似乎有效!

Use .each() to iterate through the #container .document elements.

Updated your jsfiddle. Seems to work!

゛清羽墨安 2024-12-15 04:15:01

这里有很多选项

  1. 您可以使用 .each() 迭代项目,检查回调函数是否有 2 个或更多子项,然后添加类

  2. 我更喜欢的另一个选项是使用 .filter() ,如下所示:

    $('#container .document').filter(function(){  
        返回 $(this).children().length > 2;
    }).addClass('任何东西');
    

    或您的示例:http://jsfiddle.net/saelfaer/HHSuM/6/

you have many options here

  1. you can use .each() to iterate over the items, check in the callback function whether they have 2 children or more and then add the class

  2. another option i like better, is using the .filter() like this:

    $('#container .document').filter(function(){  
        return $(this).children().length > 2;
    }).addClass('anything');
    

    or your example: http://jsfiddle.net/saelfaer/HHSuM/6/

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