2015-07-03 50 views
0

我是JS/jQuery的新手,並在我的文檔中使用以下片段準備調用具有某個類的TD上的關鍵函數:jQuery:在dblclick上的觸發事件不起作用(但在關鍵幀等工作)

$(document).on('keyup', '.calcInOut, .calcBalance', calculateSumsKPR); 

函數根據表中的輸入計算一些數據,然後用計算結果更新單元格。 該表是一個標準的HTML表格,其中包含大量動態添加的行和TD,並且所有可編輯的TD都包含可供用戶輸入數字的contenteditable div。

到目前爲止一切正常,但由於某種原因,我不能在雙擊調用相同的功能。

我嘗試使用'dblclick keyup',而不是'keyup',也試圖複製整個片段,並通過dblclick有更換keyup但兩者不觸發雙擊的功能。

我確實有另一個雙擊事件,單獨啓動,雙擊清除div的內容,但不應該能夠在這個上調用兩個單獨的事件?

如TD:

<td class="calcInOut editable"><div contenteditable="true"></div></td> 

非常感謝任何幫助, 邁克

+1

您只能使用jQuery的事件綁定調用一個事件標識符... – Mike

+0

感謝那! – keewee279

回答

2

你在這裏選擇...

看來你可能已經嘗試過載事件綁定,這是行不通的。

不起作用

$(object).on("click dblclick keyup", function() { /*do stuff*/ }) 

$(object).bind("click dblclick keyup", function() { /*do stuff*/ }) 

不工作

$(object).on("click", function() { /*do stuff*/ }).on("dblclick", function() { /*do stuff*/ }).on("keyup", function() { /*do stuff*/ }); 

$(object).bind("click", function() { /*do stuff*/ }).on("dblclick", function() { /*do stuff*/ }).on("keyup", function() { /*do stuff*/ }); 

OR

$(object).click(function() { /*do stuff*/ }).dblclick(function() { /*do stuff*/ }).keyup(function() { /*do stuff*/ }); 

ALSO

假設你的事件都想要啓動相同的過程/方法/過程...

然後你可以這樣做:

function doStuff() { 
/*do stuff*/ 
} 

$(object).on("click", doStuff).on("dblclick", doStuff).on("keyup", doStuff); 

OR

$(object).bind("click", doStuff).on("dblclick", doStuff).on("keyup", doStuff); 

OR

$(object).click(doStuff).dblclick(doStuff).keyup(doStuff); 
+0

這真棒 - 非常感謝!你是對的,我確實使用了你列舉的一種方法,因爲它不能工作。相反,我現在嘗試了你的第一個建議,這很好!我會盡快接受。 :) – keewee279

+0

只有一個問題,以確保我得到它的權利,我可以使用$(文檔)...在這裏,因爲表是動態創建的? – keewee279

+1

任何DOM對象都可以在jQuery選擇器$()中使用。所以,$(文檔)應該可以工作。 $('body')也可以作爲$(「#id」)或$(「。class」),其中id/class是您正在搜索的相應ID或類。 – Mike

相關問題