我有以下禁用所有超链接但在事件发生后我想再次启用它们,我该怎么做?
$("a").click(function() { return false; });
我不认为它只是简单地设置为真。 ;)
全部谢谢
答案 0 :(得分:18)
不要以这种方式绑定“click”处理程序,而是执行此操作:
$('a').bind("click.myDisable", function() { return false; });
然后当你想删除那个处理程序时,很容易:
$('a').unbind("click.myDisable");
这样你就可以避免弄乱可能被“点击”的其他东西了。如果您只是取消绑定“click”,则取消绑定与该事件绑定的所有内容。
2014年编辑 - 现在绑定事件的方式是.on()
:
$('a').on('click.myDisable', function() { return false; });
这样做可能会更好:
$('a').on('click.myDisable', function(e) { e.preventDefault(); });
取消绑定:
$('a').off('click.myDisable');
最后,您可以将处理程序绑定到文档正文并处理动态添加的<a>
标记:
$('body').on('click.myDisable', 'a', function(e) { e.preventDefault(); });
// to unbind
$('body').off('click.myDisable');
答案 1 :(得分:5)
试试这个:
// 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');
再见
答案 2 :(得分:4)
绑定和取消绑定需要一些开销。
另一种解决方案是添加类似disabled
的类,然后使用hasClass('disabled')
进行测试,看看它是否应该返回false
。
$('a').addClass('disabled');
$('a').click(function() {
if($(this).hasClass('disabled'))
return false;
});
答案 3 :(得分:2)
这会将页面上的所有链接替换为 #
,这意味着:禁用其他页面的链接
$(document).ready(function() {
$('a').attr('href', '#');
});
答案 4 :(得分:0)
您要取消绑定活动:http://api.jquery.com/unbind/
答案 5 :(得分:0)
你应该能够解开它。
$("a").unbind("click");
答案 6 :(得分:0)
var disableLink = function(){ return false;};
$('a').bind('click', disableLink);
要恢复:
$('a').unbind('click', dsiableLink);
答案 7 :(得分:0)
你可以取消绑定点击处理程序:
$('a').unbind('click')
答案 8 :(得分:0)
$(function(){
$.myStopAnchor = function(){
$stop = true;
}
$.myNoStopAnchor = function(){
$stop = false;
}
$.myNoStopAnchor();
$("a").click(function(ev) {
if ($stop){
ev.stopPropagation()
}
return !$stop;
});
});
答案 9 :(得分:0)
甚至更好,只需使用高display
切换大元素的z-index
即可。在下面的例子中,div覆盖了身体。
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>
答案 10 :(得分:0)
另一种方法是,如果您严格也希望网址不可访问,则可以从href
代码中删除a
属性。这样的事情:
$('a').removeAttr('href');
另外改变文本颜色和onhover光标:
$('a').css('color', '#333');
$('a').hover(function () {
$(this).css('cursor', 'not-allowed');
);