jQuery .click() 在自定义函数之前执行默认动作
Posted
技术标签:
【中文标题】jQuery .click() 在自定义函数之前执行默认动作【英文标题】:jQuery .click() perform the default action before the custom function 【发布时间】:2012-06-26 10:06:47 【问题描述】:这是我的代码,我有两个复选框,并希望保持一个禁用状态,直到另一个启用:
$(function()
$('#remember').live('click', function(event)
if($('#remember').is(':checked'))
$('#keepIn').removeAttr('disabled');
else
$('#keepIn').attr('disabled', 'disabled');
);
);
问题是这个函数在默认操作之前执行,当我点击第一个$('#remember').is(':checked')
返回false(旧值)而不是true。
【问题讨论】:
【参考方案1】:您可以改用change
事件:
$('#remember').live('change', function(event)
if (this.checked)
$('#keepIn').removeAttr('disabled');
else
$('#keepIn').attr('disabled', 'disabled');
);
演示: http://jsfiddle.net/jP3NY/
注意: live
方法已弃用。您最好使用on
或delegate
。
对于较新版本的 jQuery,解决方案可能如下:
$('body').on('change', '#remember', function(event)
$('#keepIn').prop('disabled', !this.checked);
);
您可以使用#remember
的任何父元素来代替body
。
【讨论】:
只需 2 美分 bruv 请使用.on
而不是 .live
:)
谢谢,解决了,我会尽可能接受答案。 @Tats_innit 在 live vs on issue 上,我试过了,但 .on 方法对我不起作用,请参阅这个问题:***.com/questions/11191966/…
@Tats_innit 我们不知道使用的是什么版本的 jQuery ;)
@VisioN 确实很重要,但我强烈建议任何人获取最新版本 :)
否则人们会错过很多精彩 :)
@Tats_innit 我忘了,我用的是 1.7.2以上是关于jQuery .click() 在自定义函数之前执行默认动作的主要内容,如果未能解决你的问题,请参考以下文章
在自定义控件中,有CheckBox控件,当触发OnCheckedChanged事件时
jQuery同一标签多个相同事件 return语句 表单提交实例