2011-12-01 70 views
0

我創建了一個搜索按鈕,它有一個點擊事件。當我第一次點擊它時,它會按預期觸發一次。當我第二次點擊它時會觸發兩次,當我再次點擊它時會觸發多次......任何想法爲什麼會發生這種情況?爲什麼點擊事件在我的腳本中多次觸發?

這是點擊事件代碼:

$("#search_top_form").delegate("#search_button","click",function(e) { 
      wrapperConsole('click search'); 
       alert("event trigger");          
      submitSearchForm(); 

     }); 
+0

wrapperConsole()和警報()僅僅是爲了調試的需要 – sandip

+0

你能否提供相關的html代碼?我想嘗試一下。 – satin

回答

1

我猜你是做這樣的事情http://jsfiddle.net/3756r/ ()調用的含義從submitSearchForm這個委託。

我在這裏看到的另一個潛在問題是,如果您使用的是實際表單並且該按鈕是提交按鈕,則必須將事件傳遞給click函數並調用event.preventDefault(),以便表單不會提交

+0

我訪問你的鏈接,在我的情況是一樣的..當我點擊你的代碼結果是點擊我.result是一樣的,在我的情況下多重觸發 – sandip

+0

確切 - 顯示你我在做什麼。你應該只調用一次委託,而不是來自偶數處理器 –

0

我猜你每次點擊都會重載這個腳本部分。這意味着委託爲每個負載工作,並導致觸發很多次。

您可以嘗試

$( 「#search_top_form」)undelegate(...)代表(..)。

0

我不是jQuery的專家試試這個

$("#search_button").click(function(){ 
      wrapperConsole('click search'); 
       alert("event trigger");          
      submitSearchForm(); 
     }); 
+1

這對我來說看起來更好......我不是專家,雖然 – Ortund

+0

關於:'.click()'與'.delegate()',請參見[使用委託()或不](http://stackoverflow.com/questions/7029178/to-use-delegate-or-not)。 – thisgeek

0

你爲什麼不使用只是這樣的事情,爲什麼ü使用委託?

$('#target').click(function() { 
    alert('Handler for .click() called.'); 
}); 
1

委託之前,添加此 undelegate( 「#search_button」, 「點擊」)。delagate ......

$("#search_top_form").undelegate("#search_button","click").delegate("#search_button","click",function(e) { 
      wrapperConsole('click search'); 
       alert("event trigger");          
      submitSearchForm(); 

     }); 
+0

謝謝..但它不worlking – sandip

相關問題