我創建了一個複選框,當選中時,添加到DOM。我一直在嘗試排除故障的問題是,無論複選框是選中還是取消選中,標記都會添加到DOM中,而不僅僅是在選中時。複選框沒有綁定到他們在DOM上創建的標籤jquery
我也不知道如何在關聯複選框未選中時從DOM中刪除標記。我有多少複選框,可以檢查最大值在6,這是我所期待的,但是有沒有辦法最大限度地提高父div內的子div的數量?這樣可以再次保證可以一次選擇不超過6個標籤。
這是一個jsfiddle http://jsfiddle.net/co5w7c9j/與我有什麼,希望我已經足夠解釋,而不會讓它聽起來太混亂。
下面是我到目前爲止寫的jquery,我想我錯過了一個步驟來實現我所尋找的。
感謝您花時間瀏覽我的代碼。
// When specilaty is checked, add tag to profile page
$('[name=specialty]').click(function() {
$newTag = $("<div class='specTag'>" + $(this).attr('value') + "<div class='xOut'>x</div></div>");
$(this).attr('value');
$('.Specialties').append($newTag);
/* if ($('.Specialties > .specTag').has(('[name=specialty]:checked').attr('value'))) {
$('.Specialties > .specTag').has((this).txt()).remove();
} */
// Count number of checkboxes selected and display in modal
var increment = 0;
$('[name=specialty]:checked').each(function() {
if (this.checked) {
increment++;
} else {
increment--;
}
$('#specCount').html(increment);
});
// Disable checkboxes when 6 (maximum) are selected
$("input[type=checkbox][name=specialty]").click(function() {
var bol = $("input[type=checkbox][name=specialty]:checked").length >= 6;
$("input[type=checkbox][name=specialty]").not(":checked").attr("disabled", bol);
});
// Create array of checked items - add on checked - remove on uncheck
specialtyArray = $('[name=specialty]:checked').map(function() {
return $(this).val();
// if item is in the array, then remove it from the DOM
if (jQuery.inArray($('[name=specialty]:checked').val(), specialtyArray) > -1) {}
});
console.log(specialtyArray.get());
});
// When Specialties modal closes, uncheck all checked boxes, reset count
$(document.body).on('click', '.close', function() {
$('.modal-body > #updateSpecForm > .columns').children().removeAttr('checked');
$('#specCount').html(0);
})
// Fade out specialty tags when x is clicked
$(document.body).on('click', '.xOut', function() {
$(this).parent().fadeOut('slow');
$(this).parent().remove();
});
感謝您的幫助,並對邏輯做出了一些解釋。我知道我很接近,我更新與JavaScript和jQuery,所以我仍然摸索了一下。我非常感謝幫助 – Jhauge 2014-11-03 13:38:28