b. *_*eck 13 javascript jquery events click
代码:
$('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;
});
Run Code Online (Sandbox Code Playgroud)
我在一个表单中ajaxing,然后在相关的复选框上触发click事件到另一个部分的ajax,如果有必要的话.很好地插入表单,并触发单击事件,检查需要检查的框并触发第二个ajax,因为checked复选框的属性最初是false.
如果我取消其中一个盒子,我的奶酪是什么?尽管如此e.preventDefault(),该checked属性设置为false在测试之前,因此该if语句始终执行该else语句.我也试过这个$.is(':checked'),所以我完全不知所措.
看来unchecked - > checked状态读取原始状态,但是选中 - >未选中则不会.有帮助吗?
A.W*_*ack 15
是的,我知道已经过了一年,但我想我找到了解决方案,
这里的问题是实际调用click事件并在"checked"属性添加到复选框输入之前运行.因此该函数运行,查看输入是否具有"checked"属性,并运行else条件.然后该元素被赋予"已检查"属性.
我也碰到了这个,我的解决方案是将函数绑定到更改函数而不是click函数,因为更改仅在输入更新checked属性后触发.
希望这可以帮助你,如果没有,那么在遇到类似问题时碰巧偶然发现这篇文章的其他人.
| 归档时间: |
|
| 查看次数: |
13953 次 |
| 最近记录: |