不管發生了什麼好醇'JavaScript?爲什麼你都試圖弄清楚純jQuery?
var hasBeenClicked = false;
$('div.next a').live('click',function() {
if(!hasBeenClicked){
hasBeenClicked = true;
$('.content').load('page/3/ #info','',function(){
//do something
//If you want it clickable AFTER it loads just uncomment the next line
//hasBeenClicked = false;
});
}
return false;
});
作爲一個側面說明,永遠永遠永遠使用.live()
。使用.delegate代替:
var hasBeenClicked = false;
$('div.next').delegate('a','click',function() {
if(!hasBeenClicked){
hasBeenClicked = true;
$('.content').load('page/3/ #info','',function(){
//do something
//If you want it clickable AFTER it loads just uncomment the next line
//hasBeenClicked = false;
});
}
return false;
});
爲什麼?保羅愛爾蘭解釋說:http://paulirish.com/2010/on-jquery-live/
爲了回答您的評論...
,如果你有嵌套的AJAX調用(,.get()
等)內的委託功能可能發生這種情況。 div.next
必須在頁面上才能正常工作。如果div.next
是不是在頁面上,而這並不是嵌套的,只是這樣做:
$('#wrapper').delegate('div.next a','click',function() {
http://api.jquery.com/delegate/
委託需要選擇是動態添加元素的父。然後,委託的第一個參數(最後一個例子中的div.next a
)是在選定元素(#wrapper
)內查找的元素。如果包裝沒有包裹在任何元素中,包裝也可以是body
。
你想讓鏈接在頁面加載後再次點擊嗎? –
反之亦然,我想在點擊後禁用,然後在頁面加載到容器時激活。 – devjs11