2012-03-24 67 views
0

我想用jQuery的委託來調用一個函數,並且這工作得很好:功能不會被調用,使用jQuery .delegate

$("body").delegate("div", "mouseover", function(){ 
alert("it works"); 
}); 

但我也希望能夠在其他地方使用相同的功能。因此,我可以單獨聲明它,並且按名稱調用它,而不是多次編寫相同的函數。

但這樣寫,我從來沒有看到警報。

function alertMe(){ 
alert("it works"); 
}; 

$("body").delegate("div", "mouseover", alertMe()); 

回答

1

在定義委託的同時放棄父親的身份。只是給函數名

$("body").delegate("div", "mouseover", alertMe); 
+0

這是爲我做的。謝了哥們! – 2012-03-24 07:32:26

+0

也歡迎你:) – tusar 2012-03-24 07:36:33

0

這是更好地做到這一點:

$("body").delegate("div", "mouseover", function(){ 
    alertMe(); 
    //plug more code down here 
}); 

它有優勢,主要表現在:

    如果你想在事件發生後其他的東西做
  • ,只需添加它在
  • 你可以調用更多的功能在這種形式(而不是單一的)
+0

這不回答OP問題,他已經有了這個。 – 2012-03-24 07:30:46

+0

@ dku.rajkumar你碰巧看過他的帖子嗎?他想要在每個地方調用alertMe(),而不是僅僅調用alert()。我的回答在回調函數中調用alertMe(),這樣,你可以調用更多的函數,而不僅僅是alertMe() – Joseph 2012-03-24 07:32:39

0

創建共同的事件處理程序很容易

function alertMe(event){ 
    //you also need to include the event object, for various actions like stopPropagation() 
    alert("it works"); 
}; 

$("body").delegate("div", "mouseover", alertMe); 
1

jQuery的.delegate已被.on方法所取代。我會建議你改變你的代碼來使用它。

function alertMe(){ 
    alert("it works"); 
} 

$("body").on("mouseover", "div", alertMe); 
//$("body").delegate("div", "mouseover", alertMe) -- old method 
//Note the change in postion of selector and event