我有下面的禁用所有超链接,但事件后,我想再次启用它们,我该怎么做?使用JQuery禁用并启用所有超链接
$("a").click(function() { return false; });
我不认为它就像设置为true一样简单。 ;)
感谢所有
我有下面的禁用所有超链接,但事件后,我想再次启用它们,我该怎么做?使用JQuery禁用并启用所有超链接
$("a").click(function() { return false; });
我不认为它就像设置为true一样简单。 ;)
感谢所有
而是结合你的“点击”处理程序,方法,做到这一点
$('a').unbind("click.myDisable");
您避免这样搞砸可能会被“点击”的其他东西。如果您只是取消绑定“点击”,则会解除与该事件绑定的所有内容。
编辑在2014年 —你现在绑定事件的方式是.on()
:
$('a').on('click.myDisable', function() { return false; });
也许它会是更好地做到这一点:
$('a').on('click.myDisable', function(e) { e.preventDefault(); });
解除绑定:
$('a').off('click.myDisable');
最后,你co ULD绑定一个处理程序文件体和处理<a>
标签动态添加:
$('body').on('click.myDisable', 'a', function(e) { e.preventDefault(); });
// to unbind
$('body').off('click.myDisable');
你想解除绑定事件:http://api.jquery.com/unbind/
你应该能够解除绑定。当你想删除处理它
$('a').bind("click.myDisable", function() { return false; });
然后很简单::
$("a").unbind("click");
var disableLink = function(){ return false;};
$('a').bind('click', disableLink);
恢复:
$('a').unbind('click', dsiableLink);
,你可以解除绑定单击处理:
$('a').unbind('click')
试试这个:
// 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');
bye
我在使用IE9中的live()时遇到了问题,并且它也被弃用 - 所以如果您需要支持IE9或更低版本,请考虑使用不同的解决方案。 – 2014-06-23 12:28:23
绑定和解除绑定需要一些开销。
一个不同的解决方案是添加类似disabled
的类,然后使用hasClass('disabled')
来测试并确定它是否应该返回false
。
$('a').addClass('disabled');
$('a').click(function() {
if($(this).hasClass('disabled'))
return false;
});
$(function(){
$.myStopAnchor = function(){
$stop = true;
}
$.myNoStopAnchor = function(){
$stop = false;
}
$.myNoStopAnchor();
$("a").click(function(ev) {
if ($stop){
ev.stopPropagation()
}
return !$stop;
});
});
甚至更好,只需拨动大元素的display
与高z-index
。在下面的例子中,div覆盖了body。
var link = document.getElementsByTagName('a')[2];
var noclick = document.getElementById('noclick');
link.onclick = function() {
noclick.className = 'on';
}
#noclick {
display: none;
position: absolute;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
/* Make sure this floats over content */
z-index: 100;
}
#noclick.on {
display: block;
}
<body>
<div id="noclick"></div>
<a href="#">one</a>
<a href="#">two</a>
<a href="#">three</a>
</body>
为什么downvote没有解释?我已经在多种情况下使用这种方法,并取得成功。这个答案与问题一致。 – 2013-09-29 00:19:27
请举例说明如何操作。 – 2016-05-04 11:04:31
@DEVELOPER希望有所帮助。 – 2016-05-04 12:06:30
另一种方式,如果你严格想要的网址是不可访问,以及,你可以从a
标签去除href
属性。类似的东西:
$('a').removeAttr('href');
additionaly更改文本和onHover选项光标颜色:
$('a').css('color', '#333');
$('a').hover(function() {
$(this).css('cursor', 'not-allowed');
);
所有正确的答案,但我不得不给它尖尖的指出这提示了 - 没有双关语意! – Abs 2010-02-04 19:12:21
这会频繁发生吗?据我了解,绑定/解除绑定需要一些开销。根据页面,可能不是最好的方式。 – user113716 2010-02-04 19:17:27
http://www.bennadel.com/blog/1771-Enable-And-Disable-jQuery-Event-Handlers-Rather-Than-Bind-And-Unbind-.htm – user113716 2010-02-04 19:20:05