2010-10-01 163 views
2

爲什麼我的jquery函數在點擊時運行兩次?jquery:函數運行兩次

$("a").click(processAction); 

function processAction(e){ 
    var clicked = e.target; 

//show apply button. 

     $("#apply").live("click",function(e){ 
      e.stopPropagation(); 
      someFunction(clicked); 
      alert("this the array " + mydata); 
       clicked = ""; 
      }); 
} 

someFunction運行兩次!

回答

3

.unbind( 「點擊」)綁定(「點擊,somefunction)精美的作品

+1

+1爲你的頭像 – 2011-05-07 18:39:11

+0

Brillant!謝謝! – Funky 2011-11-25 10:06:13

6

對於每次點擊a元素時,您都會爲您的#apply元素添加點擊處理程序。如果您在a元素上單擊3次,然後單擊#apply,將會運行'someFunction'的三個不同實例。

+0

看到jQuery的.live()方法和理解JavaScript事件處理程序的鏈接,以便多個處理程序創建HTTP:// ... API .jquery.com/live/ – burkestar 2010-10-01 03:27:01

+1

我應該在#apply處理程序中添加.die()方法嗎? – KJW 2010-10-01 03:37:18

+1

這不會解決你的問題,很難說你正在嘗試做什麼,可能的解決方法是移動在a元素的click處理程序之外調用.live()函數,這會將處理程序綁定到#apply元素上,但只能進行一次,只需點擊一個元素就可以顯示以前隱藏的#應用元素 – Thomas 2010-10-01 03:43:35

0

如果您正在使用.live()點擊事件附加到具體的錨,你不必附加另外的單擊事件使用

$("a").click(processAction); 

我不知道這是否是錨有意將您的.live放入錨定點擊功能中,如果不是,您可以從實際的點擊功能中拉出.live()和分離。