我有下面的禁用所有超鏈接,但事件後,我想再次啓用它們,我該怎麼做?使用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