У меня есть флажок в каждой строке. У меня есть кнопка, которая удаляет все строки, в которых отмечены флажки. Для этого мне нужно получить идентификатор строк, где установлен флажок. Я написал следующий код. Но не работает. Pls помогает мне, ребята..
Код кнопки: <a class="row-delete" align="left" onclick="deleteItem()"/>
function deleteItem(){
if (confirm("Are you sure you want to delete?")){
$(":checkbox").change(function() {
var notChecked = [], checked = [];
$(":checkbox").map(function() {
this.checked ? checked.push(this.id) : notChecked.push(this.id);
});
alert("checked: " + checked);
});
deleteAll(checked,0);
}
}
Что не так в коде выше?
Вы регистрируете обработчик события change
в методе deleteItem
который не требуется, вам нужно просто перебрать флажки с помощью.each() и обновить необходимые массивы
Также предпочтительно использовать .each()
вместо .map()
поскольку вы не возвращаете значения
function deleteItem(){
if (confirm("Are you sure you want to delete?")){
var notChecked = [], checked = [];
$(":checkbox").each(function() {
if(this.checked){
checked.push(this.id);
} else {
notChecked.push(this.id);
}
});
alert("checked: " + checked);
deleteAll(checked,0);
}
}
Удалите onchange function
из deleteItem
потому что, когда вы click
на link
она будет re-init
при изменении checkbox elements
function deleteItem(){
if (confirm("Are you sure you want to delete?")){
var notChecked = [], checked = [];
$(":checkbox").each(function() {
id=this.id;
this.checked ? checked.push(id) : notChecked.push(id);
});
alert("checked: " + checked);
deleteAll(checked,0);
}
}
Вы можете создать array of checked checkboxes
например,
$(":checkbox:checked").each(function() {
checked.push(this.id);
});
И если вы хотите удалить элементы onclick из флажка, попробуйте,
$(":checkbox").on('click',function() {
if($(this).is(':checked')){
alert($(this).attr('id'));// this item is ready to delete
}
});
last one
метод моегоanswer