2010-05-10 84 views
0

如果多次單擊菜單中的鏈接,Jquery加載函數不會停止。如何停止Jquery加載函數

jQuery代碼看起來像:

$(document).ready(function(){ 

$(".menu_rfr").unbind("click").click(function() { 
$("#main").html('<img src="img/spin.gif" class="spin">'); 
location.replace($(this).attr('rel')); 
}); 

function handleClick() { 
$(this).unbind("click"); 
$("#main").html('<img src="img/spin.gif" class="spin">'); 
$("#main").load($(this).attr('rel'), function() { 

    // reactivate it after some loading has completed 
    $(this).click(handleClick);   
});   
} 
$(".menu_clickable").click(handleClick); 
}); 

你可以看到在link text

我怎樣才能防止用戶點擊,如果DIV內容不被完全加載和永無止境的DIV裝載樣品頁?

+0

爲什麼你問同樣的確切問題,當有一個活躍的呢? http://stackoverflow.com/questions/2802403/jquery-stop-load-function-after-too-many-clicks – 2010-05-10 17:46:28

+0

這是無處接近有效的HTML ...有''和''標籤將是一個好開始... – 2010-05-10 17:57:03

+0

@尼克 - 對不起,我以爲上一個問題不會看到其他人... – Sergio 2010-05-10 19:07:50

回答

0

handleClick中的$(this)不是指元素。

下面是一些解決此問題的方法的代碼。我認爲它會起作用,但我不在可以測試它的計算機上。

$(document).ready(function(){ 

$(".menu_rfr").click(function() { 
    $("#main").html('<img src="img/spin.gif" class="spin">'); 
    location.replace($(this).attr('rel')); 
}); 

function handleClick(ele) { 
    $(ele).unbind("click"); 
    $("#main").html('<img src="img/spin.gif" class="spin">'); 
    $("#main").load($(this).attr('rel'), function() { 
     // reactivate it after some loading has completed 
     $(ele).bind('click',function(event){bindClick(event.target);});   
    });   
} 

function bindClick(ele){ 
    $(ele).bind('click',function(event){ 
     handleClick(event.target); 
    }); 
} 

$(".menu_clickable").each(function(){ 
    bindClick($(this)); 
}); 
}); 
+0

不,它不工作。它加載後的starks「spin.gif」並且不加載其他部分的DIV :( – Sergio 2010-05-10 19:05:48