如何在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的长度。我如何正确地得到这个?
答案 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]。