2011-08-21 54 views
4

如何計算jquery中具有相同類的元素動態生成元素? 我發現了一個類似的問題,但不幸的是它沒有工作。 jQuery counting elements by class; what is the best way to implement this?計算jquery中具有相同類的元素數

我做了這樣的事情,我從答案基於:

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

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

是動態生成的一類capital_class的元素。但是每當我模糊時,我總是得到1的長度。我如何正確得到這個?

+0

嘗試在alert中使用'.capital_class'而不是'this'。 – Puzo

回答

19

更改警惕這一點:

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

記住該事件被稱爲一個單獨的元素,從而this只是一個單一的元素 - 你必須有jQuery的查詢DOM事件發生後。 (第一個查詢只是設置了實時處理來創建事件處理程序。)

+2

+1因爲麻煩加入解釋。 –

4

使用此:

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

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

this在功能指的是活動對象,當你這樣做$(this).length,是因爲該元素沒有任何重複返回1。

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]

相關問題