我想,這樣當一個表中的複選框,屬性value
和複選框的data-title
用戶點擊應存放在一個JS來實現功能作爲新的鍵 - 值對數組元素的名爲selected
的對象字面值。
如果用戶在同一個複選框上再次單擊,則應刪除相應的數組元素。
問題
第一次被點擊複選框,陣列在物體selected
創建爲意圖。
但是,如果第二次點擊相同的複選框,而不是刪除相應的數組,將添加一個新的(重複)。
代碼
var selected = {items:[]};
$('#table').on('click', 'input[type="checkbox"]', function() {
var found = false;
$.each(selected.items, function(i, val) {
if (val.key == $(this).attr("value")) {
selected.items.splice(i ,1);
found = true;
return false; //step out of each()
}
});
if (found == false) {
selected.items.push({key: $(this).attr("value"), value: $(this).attr("data-title")});
}
console.log(selected);
});
爲什麼不使其取決於複選框的「checked」狀態?我假設你的數組應該代表當前被檢查的方框。 – KWeiss
這可能是'val.key == $(this).attr(「value」)'的問題。這可能(可能是由於Javascript中平等的奇怪),從來沒有回報。你也應該使用[===](http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons)。 [調試你的javascript](http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code)並檢查這 – Liam
寫得很好的問題順便說一句,做得好。如果只有每個低代表用戶都是這個體貼的 – Liam