如何使用jquery在事件上排序元素

viM*_*MaL 5 html javascript jquery html5 dom

我有一种情况,我想根据事件定位某些元素.例如:

<div id="leftBox">
    <div class="green">GREEN</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
</div>



<div id="rightBox">
    <div class="green">GREEN</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
    <div class="green">GREEN</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
    <div class="green">GREEN</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
</div>
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在#leftBox .green上时,我希望#rightBox中的所有元素都在.green的顶部,如:

<div id="rightBox">
    <div class="green">GREEN</div>
    <div class="green">GREEN</div>
    <div class="green">GREEN</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
    <div class="blue">BLUE</div>
    <div class="red">RED</div>
</div>
Run Code Online (Sandbox Code Playgroud)

而像同为的.blue.red

cod*_*rex 2

$(document).ready(function(){

    $("div#leftBox div").mouseover(function(){

        $("div#rightBox ."+$(this).attr('class')).each(function() {

             $("div#rightBox").prepend($(this));
        });

    });

});
Run Code Online (Sandbox Code Playgroud)

这也可以正常工作,您可以在这里查看演示,http://jsfiddle.net/S8TXq/

如果你想保留其他元素的顺序,只需尝试这个

$(document).ready(function(){

    $("div#leftBox div").mouseover(function(){
        main = $('#rightBox div').clone(true);
        $("div#rightBox ."+$(this).attr('class')).each(function() {

             $("div#rightBox").prepend($(this));
        });

    }).mouseout(function() {
    $('#rightBox').empty().append(main);});

});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/S8TXq/5/