【问题标题】:To drag and drop, parent and child elements separately分别拖放,父元素和子元素
【发布时间】:2014-10-14 05:12:41
【问题描述】:

例如,我创建了一个jsFiddle,我可以在其中拖动父元素和子元素。

HTML:

<div id='container'>
   <ul>
      parent1
      <li>child1</li>
      <li>child2</li>
      <li>child3</li>
   </ul>
   <ul>
      parent2
      <li>child1</li>
      <li>child2</li>
      <li>child3</li>
   </ul>
</div>

JS:

$("#container ul,li").draggable();

这里,当我拖动时,父元素,子元素也随之拖动。我真正需要的是,将它们分开拖动。当我拖动父元素时,应该单独拖动父元素,当拖动子元素时,应该单独拖动子元素。怎么可能?

请提出一个方法。

【问题讨论】:

    标签: jquery drag-and-drop jquery-ui-draggable jquery-ui-droppable


    【解决方案1】:

    在大多数情况下,在没有孩子的情况下移动父母是没有意义的,因此您可能找不到开箱即用的解决方案。

    如果可以更改 HTML,类似的方法可能对您有用。

    HTML

    <div id='container'>
        <ul>
            <li>parent1</li>
            <li style="list-style: none;">
                <ul>
                    <li>child1</li>
                    <li>child2</li>
                    <li>child3</li>
                </ul>
            </li>
        </ul>
    </div>
    

    请注意,&lt;li&gt;&lt;ul&gt; 的唯一有效子代,但 &lt;ul&gt;&lt;li&gt; 的有效子代。

    jQuery

    $("#container ul li:first, #container ul li ul li").draggable();
    

    这是 JSFIDDLE 上的结果。

    【讨论】:

    • @Magnus Engdal,但是如果列表太长,有很多 ul 和 li,这怎么可能?