如何使用jQuery处理从另一个PHP文件填充的html复选框?

时间:2015-02-10 02:26:59

标签: javascript php jquery html

我无法禁用使用jQuery从其他PHP填充的某些复选框。我想我的错误来自$(document).ready。请帮忙,谢谢!

PHP:

$result = mysqli_query($con, 'SELECT * FROM table WHERE user="'.$_POST['user'].'%"');
while ($row = mysqli_fetch_assoc($result)) {
    echo '<input type="checkbox" value="'.$row['user'].'" data-tag="'.$row['tag'].'" />'.$row['user'];
}

Jquery的:

$(document).ready(function() {
    $('#showResult').click(function() {
        $.ajax({
            type: 'post',
            url: 'load_result.php',
            data: { user: $('#userSelect').val() }
            success: function(data) {
                $('#result').html(data);
            }
    });

    $('input[type="checkbox"]').on('click', function() {
        var $this = $(this);
        var tag = $this.data('tag');
        if ($this.is(':checked')) {
            $('input[type="checkbox"]:not([data-tag*="'+tag+'"])').prop('disabled', true);
        } else {
            $('input[type="checkbox"]:not([data-tag*="'+tag+'"])').prop('disabled', false);
        }
    });
});

1 个答案:

答案 0 :(得分:1)

由于正在创建新元素,因此在进行事件绑定后,您必须使用on,这意味着在所有复选框和新复选框上绑定click事件。

您的代码应如下所示:

$('body').on('click', 'input[type="checkbox"]',function() {
        var $this = $(this);
        var tag = $this.data('tag');
        if ($this.is(':checked')) {
            $('input[type="checkbox"]:not([data-tag*="'+tag+'"])').prop('disabled', true);
        } else {
            $('input[type="checkbox"]:not([data-tag*="'+tag+'"])').prop('disabled', false);
        }
    });

在过去的版本中,您可以使用live();但是从1.7开始,这已被弃用,您必须使用on()