2013-05-08 75 views
2

我想綁定動態更改ID,代碼工作正常的靜態ID,但一旦我用來動態綁定其不綁定。.bind無法動態創建ID?

$("#placeholder"+id).bind("\""+"plothover"+id+"\"", function (event, pos, item) {--some code here --} 

如果以這種方式使用它的工作方式包括「活」的方法,而不是「綁定」精

$("#placeholder"+id).bind("plothover", function (event, pos, item) {--some code here --} 
+0

你檢查瀏覽器控制檯的任何錯誤? – 2013-05-08 11:18:02

+0

爲什麼這個 - '「\」「+」plothover「+ id +」\「」'?是這種某種eventType – 2013-05-08 11:18:12

+0

我只是想綁定動態ID ....我試圖以這種方式......是任何可能的鍛鍊來綁定動態變化的ID? thnxs – user1260967 2013-05-08 11:25:06

回答

2

這是由於結合不工作的動態元素,從jQuery站點採取:

在jQuery 1.7中,。對()方法是用於 事件處理程序安裝到一個文件的優選方法。對於早期版本, .bind()方法用於將事件處理程序直接附加到 元素。處理程序被附加到jQuery對象的當前選定元素 中,所以這些元素必須存在於發生.bind()的調用 處。要獲得更靈活的事件綁定,請參閱.on()或.delegate()中事件委託的討論 。

這裏的解決方案是使用.on方法。

我們還需要知道想要捕獲哪個事件,綁定將事件綁定到元素,例如「單擊」。在那一刻,你似乎沒有約束任何特定的事件。

+0

在這種情況下,我正在使用flot來繪製圖表,並且我將圖形綁定到十字準線以獲取值.... thnxs爲您的答案,但能夠抓住如何。on方法將起作用>> – user1260967 2013-05-08 11:34:09

+0

我想你需要「onmouseover」事件。在jQuery網站上查找.on方法,它會給你所有你需要知道的。 – 2013-05-08 11:36:04

0

使用 '上' 功能:

用作綁定 - $(el).on('event name',callback);

用作活 - $(el parent).on('event name','element selector',[may be some data],callback)

命名空間 - $(el).on('namespace.event',callback)

數據 - $(el).on('event',{col: varCol},callback)

+0

Thnxs的建議.........但這裏'事件名稱'是不固定的,它可能是'事件名稱1'或'事件名稱2'..........任何建議如何申請那個案例.. – user1260967 2013-05-08 11:39:42

+0

嗯......我看到兩個解決方案:首先使用命名空間$(el).on('namespace.event',...)其中namespace id代表你的id,second--使用一個事件名稱並追加數據到事件:$(el).on('event',{col:varCol},callback) – 3y3 2013-05-08 11:48:39

0

如果你的元素尚未創建.bind()將不起作用!你必須使用.live()

http://api.jquery.com/live/

它結合事件一次父元素,你從那裏處理所有子事件。這是正確的方法,這種方式,你只有一個事件父母,防止內存泄漏,如果你不正確地刪除動態元素。

哎呀:

As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().

但它仍然在做同樣的東西:)