2013-02-22 84 views
0

我有一個像jQuery UI的拖拽孩子不是父母

<ul> 
    <li>Personal Details 
     <ul style="position: relative; left: 0px; top: 0px;" class="ui-draggable">  
      <li>First Name</li> 
     <li>Last Name</li> 
     </ul> 
    </li> 
    <li>Employment Details 
     <ul style="position: relative;" class="ui-draggable"> 
      <li>Title</li> 
      <li>Department</li> 
     </ul> 
    </li> 
</ul> 

http://jsfiddle.net/grimmus/PtzF4/1/

我想只允許孩子列表中的項目爲可拖動的列表項簡單的層次結構。所以,你不能將個人的詳細信息,但可以通過拖動姓氏,名字等

我嘗試過使用拖動兒童(),但它拉過所有的孩子,不只是一個:-)

有誰知道我能做到這一點嗎?請檢查小提琴 - http://jsfiddle.net/grimmus/PtzF4/1/

感謝

回答

3
$('#results').delegate('li li', 'mouseover', function() 

你只需要你選擇改變只子元素。

http://jsfiddle.net/PtzF4/2/

+1

很聰明的答案。 – Ashwin 2013-02-22 11:46:19

+0

謝謝,我沒有意識到它可以如此簡單:) – grimmus 2013-02-22 11:57:15

0

兩個問題:這會在您每次將鼠標放置到它的時候重新運行draggable()的元素; delegated()已棄用。如果你所要做的只是有一個可拖動元素的靜態列表,那麼只需使用each()即可。

$('#results .ui-draggable li').each(function() { 
    $(this).draggable({ 
     revert: true, 
     revertDuration: 0 
    }); 
}); 

如果您正在尋找能夠動態地添加元素,並使其可拖動(這是什麼樣子,你要根據代碼來執行),看看這個:
http://jsfiddle.net/PtzF4/4/
刪除了無關的東西,使jsfiddle脾氣暴躁,並添加了一個記錄器,以顯示我的版本和Selven的有關重新運行draggable()之間的區別。