2011-08-29 70 views
0

我想換一次函數的變化。但是對於這種變化,不斷嘗試將檢測變化的交換功能與以前的事務聯繫起來。作爲一個例子,我把戒備。正如你在警報過程中看到的一樣,這個過程不斷增長。我只是點擊過程中重複這個過程,使我能做什麼?jquery重複問題

感謝您的關注。

版本的代碼運行:http://www.smyrnart.com/deeplinking/index.html

我的代碼;

的Index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html><head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://www.asual.com/jquery/address/samples/express/jquery.address-1.3.min.js"></script> 
<script type="text/javascript"> 
     $('a').address(function() {return $(this).attr('href').replace(/^#/, '');}); 
     $.address.change(function(event) { 

      var url=""; 
      if  (event.value=='/index1') {url = "index1.html"} 
      else if (event.value=='/index2') {url = "index2.html"} 

      if (url!==""){ 
       $.ajax({url : url,success : function(data){$("#content").html(data);}}); 
      } 
     }); 
</script> 

</head> 

<body> 
<a title="" href="#/index1/">index1</a> | <a title="" href="#/index2/">index2</a> 
<div id="content" style="margin-top:50px;"></div> 
</body> 

</html> 

Index1.html

<strong>in order;</strong><br/><br/> 

index1<br/> 
index2<br/> 
index1<br/> 
index2<br/><br/> 

alert: problem repeat 

Index2.html

<script type="text/javascript"> 
$.address.bind('change', function(e) { 
//I used as examples only. anything else to do here, but should be resolved in this process of repetition. 
    alert('problem') 

}); 
</script> 

<div> 
$.address.bind('change', function(e) { 
    alert('problem') 
}); 
<strong>Go now #index1, at this #index2</strong> 
</div> 

回答

0

我覺得你應該先解除綁定以前綁定的事件然後綁定新的事件。

$.address.unbind('change').change(function(event) {... ,而不是僅僅$.address.change(function(event) {

希望這有助於你。

+0

感謝user909159。但沒有解決我的問題。 –

0

您每次單擊this示例中的鏈接時都會收到越來越多的警報,原因是每次ajax調用成功完成時,就會評估返回的腳本標記中的代碼,因此每次單擊鏈接jQuery將處理程序綁定到它可以在頁面上找到的每個鏈接。 由於每當您單擊處理程序附加示例中的鏈接時,可能會有多個處理程序用於Javascript中的任何事件。所以如果你點擊3次,你會得到3個警報,點擊15次,你會得到15個警報(15個點擊處理程序附加到頁面上的任何鏈接)。

+0

我改變http://www.smyrnart.com/deeplinking/index.html也許你現在可以看到問題。 –

+0

我認爲這仍然是同樣的問題。 **每次**我點擊鏈接「index2」你加載一些腳本和HTML。您必須意識到,任何加載和評估的腳本對整個頁面中的DOM(HTML)都有影響(在這種情況下,導致alert()被觸發X次,其中X是您點擊「index2.html」鏈接的次數)。也許你應該退出這個「alert」的例子,並給我們舉例說明你的代碼是真的**的意思。 – WTK