我无法禁用使用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);
}
});
});
答案 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()
。