计算jquery中具有相同类的元素数

时间:2011-08-21 13:57:46

标签: jquery

如何在jquery中动态生成具有相同类的元素? 我发现了一个类似的问题,但不幸的是它没有用。 jQuery counting elements by class; what is the best way to implement this?

我做了类似的事情,我根据答案做了一些事情:

$('.capital_class').live('blur', function(){

alert($(this).length);
});

具有类capital_class的元素是动态生成的。但每当我模糊时,我总是得到1的长度。我如何正确地得到这个?

3 个答案:

答案 0 :(得分:21)

将警报更改为:

alert($('.capital_class').length);

记住在单个元素上调用事件,因此this只是一个元素 - 事件发生后你必须让jQuery查询dom。 (第一个查询只是设置实时处理以创建事件处理程序。)

答案 1 :(得分:4)

使用此:

$('.capital_class').live('blur', function(){

alert($('.capital_class').length);
});
函数中的

this引用事件目标,当你执行$(this).length时,它返回1,因为该元素没有任何重复项。

答案 2 :(得分:1)

在这种情况下,这可能不是您所需要的,但为了让您在拥有多个类时更加动态,并且希望确保所有类匹配,您可以这样做:

$('.capital_class').live('blur', function(){

    var classes_selector = '.' + $.trim(this.className).replace(/\s+/g,'.');
    alert($( classes_selector ).length);

});

您基本上使用单个className字符替换.属性中一个或多个连续空格的所有实例。这是因为class-selector[docs]能够根据匹配的所有类进行选择。

它还使用jQuery.trim()[docs]方法去除任何前导/尾随空格。

现在,如果您向接收事件的元素添加和删除其他类,它将始终只匹配具有所有相同类的元素。


如果您希望匹配原始元素具有任何一个类的所有元素,请执行以下操作:

$('.capital_class').live('blur', function(){

    var classes_selector = '.' + $.trim(this.className).replace(/\s+/g,',.');
    alert($( classes_selector ).length);

});

这只是向选择器添加逗号以分隔类,创建multiple-selector[docs]