2013-02-22 59 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()之间的区别。