作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
代码:
$('input.media-checkbox').live('click', function(e){
e.preventDefault();
var that = $(this);
if (that.attr('checked') == 'checked'){
var m = that.attr('media');
var mid = 'verify_' + m;
that.parents('div.state-container').find('ul.' + mid).remove();
that.attr('checked', false);
} else {
var url = AJAX_URL;
$.ajax({
type: 'GET',
url: url,
dataType: 'html',
success: function(data){
that.parents('li').siblings('li.verification').children('div.media-verification').append(data).fadeIn(500);
that.attr('checked', 'checked');
}
});
}
return false;
});
我在表单中使用 ajax,然后在必要时将相关复选框上的点击事件触发到另一个部分中的 ajax。表单被很好地插入,点击事件被触发,选中需要被选中的框并触发第二个 ajax,因为复选框的 checked
属性最初是 false
.
让我的奶酪凝结的是,如果我取消选中其中一个框。尽管 e.preventDefault()
,checked
属性在测试前设置为 false
,因此 if
语句始终执行 else
语句。我也用 $.is(':checked')
试过了,所以我完全不知所措。
似乎 unchecked -> checked 状态读取原始状态,但 checked -> unchecked 不会。有帮助吗?
最佳答案
B.E.,我知道已经过去一年了,但我想我找到了解决方案,
这里的问题是,在将“checked”属性添加到复选框输入之前,click 事件实际上被调用并运行。因此函数运行,查看输入是否具有“checked”属性,并运行 else 条件。然后该元素被赋予“checked”属性。
我也遇到了这个问题,我的解决方案是将函数绑定(bind)到 change 函数而不是 click 函数,因为 change 只会在输入的选中属性更新后触发。
希望这对您有所帮助,如果没有,也希望对遇到类似问题时偶然发现这篇文章的任何其他人有所帮助。
关于javascript - jQuery/JavaScript : Click event on a checkbox and the 'checked' attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786223/
我是一名优秀的程序员,十分优秀!