2011-03-22 39 views
1

我不確定是否我已經走過了這條正確的道路,但它的結果是什麼。 我有一個包含列表項目的LHS的主列表,列表項可以被放到多個可放置的div盒子裏面,在可放置的div裏面有一個ul可排序並連接到頁面上的所有其他uls,這樣一旦物品從主列表中刪除,它就可以被拖放到其他物品中,從而修改其在連接的物品中的位置。JQuery元素創建並添加到可排序的連接列表中不可選擇將事件應用到

我遇到的問題是,從主列表中刪除新創建的li不能通過jquery選擇器進行選擇,並且以預期的方式應用事件,我可以通過使用id來應用事件如果你願意的話,這會失去它屬於一個事件組的能力,也就是說,上下文菜單不會隱藏,因爲它是爲每個元素而不是一組元素創建的。

我在這裏創建了一個小提琴頁面,演示了一個簡化的設置和問題。

http://jsfiddle.net/mJLZu/54/

我認爲這可能是一個錯誤或使用jQuery異常。

刪除ul.sortable代碼允許使用jquery將新動態創建的li作爲一個組進行選擇。

我很難過。任何幫助將不勝感激:)

回答

1

您的選擇是錯誤的。如果不使用這個的:

$('ul[class=listItem_drop] li').dblclick(function() 

使用此:

$('ul.listItem_drop li').dblclick(function() 

這裏的區別是,你的第一選擇與class屬性,和精確的數值沒有其他類尋找一個元素。測試類,.classname選擇器,遠遠更常見的方式是你想要的。

但是你問,還有哪些其他類?那麼,當你使用jQueryUI時,它會添加類來跟蹤一些內部事物。這檢查員是顯而易見的:

enter image description here

(更新fiddle

+0

謝謝你迷死人! :)另一個快速的問題是,當重新應用事件時,dblclick事件現在會爲原始元素激發兩次,您將如何去除原始事件並重新應用它們以便它們僅觸發一次?再次感謝! – 2011-03-22 02:32:14

+0

您通常會使用['unbind'](http://api.jquery.com/unbind)**來做到這一點,但是**爲什麼我只是簡單地*不*應用它時,事情拖動。或者,如果您確實只想要在發生拖動後應用事件,請不要在最初附加事件,也不要使用['live'](http://api.jquery.com/live)而不是'.dblclick' – 2011-03-22 02:34:37

+0

是真的,對於雙擊事件你可以使用id,我只是用它作爲一個簡單的例子。但有一個上下文菜單作爲一個組應用於項目。將上下文菜單重新應用於組創建另一個實例。 $('ul.listItem_drop li')。contextMenu(menu_listItem_drop,{theme:'vista'});我可以使用綁定將新項目添加到當前上下文菜單嗎? – 2011-03-22 03:03:33

相關問題