2011-07-06 123 views
2

我试图移动容器divs两者之间(#one#two)。我似乎无法弄清楚如何选择另一个div内的div移动元素与jQuery

我发现了一个类似的topicdiv内靶向类。它给了我使用父母的想法。

jQuery有 a large list of selectors,我想我可以用其中的一个。但我直觉地认为我可以使用#one.draggable或其他类型的指定路径。

Example on JSFiddle

CSS:

div 
{ 
    display:inline; 
    background-color:#eee; 
} 

.draggable 
{ 
    width: 50px; 
    height: 50px; 
    background-color: lime; 
    z-index: 2; 
    display: block; 
    float: left; 
    background-color: #333333; 
} 

#one 
{ 
    width: 200px; 
    height: 200px; 
    background-color: #555555; 
    z-index: 1; 
    float: left; 
} 

#two 
{ 
    width: 200px; 
    height: 200px; 
    background-color: #777777; 
    z-index: 1; 
    float: left; 
} 

的jQuery:

$(document).ready(function() { 
    $(".draggable",$(this).parent("one")).click(function() { 
     // move from "one" to "two" 
     $(this).appendTo("#two"); 
    }); 

    $(".draggable",$(this).parent("two")).click(function() { 
     // move from "two" to "one" 
     $(this).appendTo("#one"); 
    }); 
}); 

HTML:

<div id="one"> 
    <div class="draggable">1</div> 
    <div class="draggable">2</div> 
    <div class="draggable">3</div> 
</div> 

<div id="two"> 
    <div class="draggable">4</div> 
    <div class="draggable">5</div> 
    <div class="draggable">6</div> 
</div> 

回答

4

我会尝试坚持看起来是你的问题的核心:使用$('#one .draggable')(空间很重要!)选择所有div中带有id'one'的可拖动类的div。

所以你完全jQuery代码应该是:

$(document).ready(function() { 
    $('#one .draggable').click(function() { 
     // move from "one" to "two" 
     $(this).appendTo("#two"); 
    }); 

    $('#two .draggable').click(function() { 
     // move from "two" to "one" 
     $(this).appendTo("#one"); 
    }); 
}); 

UPDATE

正如你注意到,与上面的代码是不可能的第一招后再次移动同一div。解决办法如下:

$(document).ready(function() { 
    $('#one .draggable').live('click', function() { 
     // move from "one" to "two" 
     $(this).appendTo("#two"); 
    }); 

    $('#two .draggable').live('click', function() { 
     // move from "two" to "one" 
     $(this).appendTo("#one"); 
    }); 
}); 
+0

+1我对空间不了解。您的答案存在问题 - 将.draggable从“one”移至“two”后,无法将其移回。这是因为解决了“#two .draggable”,然后将其应用于div“one”。我发现了一个变通办法,通过解决“div.draggable” :) – afaf12

+0

空间的意思是“这是使用id =一个股利的后裔所有的div类拖动”。没有空格,你会选择“一个ID =一个AND类=可拖动的div”。我正在用针对您所述问题的解决方案更新原始答案。 – bfavaretto

+0

从jQuery 1.7开始,现在不推荐使用.live()。更好地使用.on()代替。 http://api.jquery.com/live/ – SapuSeven