2014-11-24 63 views
0

我動態地(由jquery)製作HTML元素,其類別爲.foo.bar,其所有元素均爲inputs類型checkboxes。我有一個按鈕checkAll,它檢查所有框,並將其id s推入一個名爲selectedBuckets的數組中。此按鈕不是動態製作的。它看起來是這樣的:如何通過jquery查找屬於動態添加的類的所有元素?

var bucketClasses = [$('.foo'), $('.bar')]; 
$('#checkAll').click(function() { 
    var isAdd = true;  
    var selectedBuckets = []; 
    bucketClasses.forEach(function (bucketClass) { 
     bucketClass.each(function() { 
      this.checked = isAdd; 
      if (isAdd) 
       selectedBuckets.push(this.id); 
     }) 
    }); 
}); 

的問題是,該功能是無法發現,有一類.foo(或.bar爲此事)的HTML元素。通過放置斷點,我發現bucketClass是一個空陣列,理想情況下它應該是所有checkboxes的數組,其類別爲.foo。我究竟做錯了什麼?

+1

也發表您的HTML請:) – Refilon 2014-11-24 11:45:02

+0

請認準'live'和'on'的jQuery api.these方法,幫助處理元件,它是動態創建 – 2014-11-24 11:45:08

+4

移動'var bucketClasses = [$('。foo'),$('。bar')];'內部的點擊處理程序,以便它獲取_currently_擁有這些類的元素。雖然代碼似乎比它需要更復雜。 prop('checked',true).map(function(){return this.id;})。get()。get() );' – nnnnnn 2014-11-24 11:49:03

回答

3

您應該將在該點的回調函數的變種:

$('#checkAll').click(function() { 
    var bucketClasses = [$('.foo'), $('.bar')]; 
    // all other code as is 
}); 
+0

@ A.Wolff我剛剛提出了var的一個小改動,儘管你的選擇器很可讀,在上面的評論中_nnnnnn_的評論好得多。 – Jai 2014-11-24 11:54:25

+0

在調試時,我嘗試打印'bucketClasses'。它似乎是好的,並正確地打印陣列。 – 2014-11-24 11:56:23

相關問題