Снимите флажок по идентификатору в jquery
Код:
$(function() {
$("input[type=checkbox]").on( "click", function() {
deptsSelected = '<div id = "selected_'+this.id+'"> '+ $("label[for='" + this.id + "']").text() + '<span id="delete">X</span></div>';
$("#tabs").append(deptsSelected);
});
$(document).on("click", "#delete", function(e) {
id = $(this).parent().attr('id')
e.preventDefault();
$(this).parent().remove();
var checkid = $("#"+id.slice(9));
checkid.prop("checked", false);
});
Приведенный выше код должен снять соответствующий флажок, когда пользователь нажимает на конкретный Div. Div динамически генерируется JQuery, так что я сделал здесь, чтобы взять идентификатор нового сгенерированного Div и использовать функцию слайса, чтобы взять идентификатор флажка, который я хочу снять. Как я могу снять флажок, который я хочу, используя идентификатор?
4 ответа
Решение
Вы забыли поставить префикс #
для удостоверения личности или .
для класса
Предположим, это идентификатор
var checkid = $('#' + id.slice(9));
checkid.prop("checked", false);
или использовать класс как
var checkid = $('.' + id.slice(9));
checkid.prop("checked", false);
Вот так:
$("input[type=checkbox]").on( "click", function() {
deptsSelected = '<span id="delete" data-checkbox="'+this.id+'">X</span></div>';
$("#tabs").append(deptsSelected);
});
$(document).on("click", "#delete", function(e) {
var id = $(this).parent().attr('id');
var checkboxID = $(this).attr('data-checkbox');
e.preventDefault();
$(this).remove();
$('#'+checkboxID).attr('checked', false);
});
Используйте префикс ID:
var checkid = $('#' + id.slice(9));
Изменить эту часть:
var checkid = $(id.slice(9));
Вот что я сделал:
$("input[type=checkbox]").on( "click", function() {
deptsSelected = '<div id = "selected_'+this.id+'"> '+ $("label[for='" + this.id + "']").text() + '<span class="delete">X</span></div>';
$("#tabs").append(deptsSelected);
});
$(document).on("click", ".delete", function(e) {
var parent = $(this).parent();
var id = parent.attr('id')
parent.remove();
var checkid = $('#'+id.replace("selected_", ""));
checkid.prop("checked", false);
});
В вашем коде все еще есть какая-то проблема, например: если я снимаю флажок, он добавляет div, но это не проблема в вашем вопросе.
Здесь jsfiddle