2011-08-10 95 views
0

我有列表。如何使用jquery删除子元素

<ul id="main"> 
    <li><a href="#">Blah ...</a></li> 
    <li><a href="#">Blah ...</a></li> 
    <li><a href="#">Blah ...</a></li> 
    <li id="more">More 
     <ul> 
     <li><a href="#">Blah ...</a></li> 
     <li><a href="#">........</a></li> 
     <li><a href="#">........</a></li>  
     </ul> 
    </li> 
</ul> 

主要列表显示给用户。当用户悬停超过列表项目更多。他看到更多列表的下拉菜单。当用户点击列表项中的更多列表。它应该代替第3个孩子主要列表第3个项目将被添加到#more列表。

我很感激任何帮助。

回答

0

CSS

#more ul { display: none; } 

的Javascript

$('#more').hover(function() { $('ul', this).show(); }, 
       function() { $('ul', this).hide(); }); 

$('#more li a').live('click', function() {  
    $(this).before($('#main > li:last-child').prev()); 
    $('#main > li:last-child').before(this); 
}); 

工作实施例:http://jsfiddle.net/FishBasketGordo/BAJXB/

编辑:我上述改变clicklive和除去一些不必要的代码。

1

这应做到:

$('#more li').click(function() { 
    $('#main li').eq(2).replaceWith(this).appendTo('#more'); 
}); 

对于徘徊,看看http://api.jquery.com/hover/

0
$('#more').hover(function(){$('#more ul').show();}, function(){$('#more ul').hide();}); 

$('#more li').click(function(){ 
    var thirdChild = $('#main li:eq(2)'); 
    thirdChild.replaceWith(this).appendTo('#more'); 
}); 
0

这里是工作demo

$(function(){ 

$('#more').hover(function(){ 
    $('#more ul').show(); 
}, function(){ 
    $('#more ul').hide(); 
}); 

$('#more li').click(function() { 
    $('#more ul').append($('#main > li').eq(2)) 
    $('#more').before(this); 
}); 

})