我有以下禁用所有超链接,但在事件后我想再次启用它们,我该怎么办呢?
$("a").click(function() { return false; });
Run Code Online (Sandbox Code Playgroud)
我不认为它只是简单地设置为真.;)
谢谢大家
Poi*_*nty 18
不要以这种方式绑定"click"处理程序,而是执行以下操作:
$('a').bind("click.myDisable", function() { return false; });
Run Code Online (Sandbox Code Playgroud)
然后,当您想要删除该处理程序时,这很容易:
$('a').unbind("click.myDisable");
Run Code Online (Sandbox Code Playgroud)
这样你就可以避免弄乱可能被"点击"的其他东西了.如果您只是取消绑定"单击",则解除绑定到该事件的所有内容.
在2014年编辑 - 现在绑定事件的方式是.on():
$('a').on('click.myDisable', function() { return false; });
Run Code Online (Sandbox Code Playgroud)
可能这样做会更好:
$('a').on('click.myDisable', function(e) { e.preventDefault(); });
Run Code Online (Sandbox Code Playgroud)
解开:
$('a').off('click.myDisable');
Run Code Online (Sandbox Code Playgroud)
最后,您可以将处理程序绑定到文档正文并处理<a>动态添加的标记:
$('body').on('click.myDisable', 'a', function(e) { e.preventDefault(); });
// to unbind
$('body').off('click.myDisable');
Run Code Online (Sandbox Code Playgroud)
试试这个:
// Better to use the live event handler here, performancewise
$('a').live('click', function() {... return false;});
// Now simply kill the binding like this
$('a').die('click');
Run Code Online (Sandbox Code Playgroud)
再见
绑定和取消绑定会花费一些开销。
另一种解决方案是添加一个类似的类disabled,然后用于hasClass('disabled')测试并查看它是否应该返回false。
$('a').addClass('disabled');
$('a').click(function() {
if($(this).hasClass('disabled'))
return false;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16271 次 |
| 最近记录: |