Снимите флажок по идентификатору в 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);
  });

http://jsfiddle.net/uure20xe/

Используйте префикс 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

Другие вопросы по тегам