重新排序列表项jquery

时间:2011-06-06 02:59:35

标签: jquery

不使用可滚动 - 我试图使用'click'向上或向下移动(嵌套)ul。但是在这个例子中:console.log = []?我知道它的丑陋,我可能不会使用它,但我更感兴趣的是为什么我不能得到'结果'的结果?

$(function(){
$('.moveUp').click(function(){
    theList = $(this).parent().parent();        
    prevList = $(this).parent().parent().prev();
    console.log(prevList);              
        });
});



<ul>
<li>

<div class="category-list">
<ul>
<li>Category: other</li>
<li>Edit this Category</li>
<li>Delete this Category</li>
<li class="moveUp">Move up</li>
<li class="moveDown">Move down</li>
</ul>
</div>

<div class="category-list">
<ul>
<li>Category: other</li>
<li>Edit this Category</li>
<li>Delete this Category</li>
<li class="moveUp">Move up</li>
<li class="moveDown">Move down</li>
</ul>
</div>

<div class="category-list">
<ul>
<li>Category: other</li>
<li>Edit this Category</li>
<li>Delete this Category</li>
<li class="moveUp">Move up</li>
<li class="moveDown">Move down</li>
</ul>
</div>

</li>

<li>Some other List Item</li>

<li>Ditto</li>

</ul>

2 个答案:

答案 0 :(得分:1)

上面的列表没有prev。其他列表似乎工作正常,控制台显示它获得前一个div。 <{1}}没有环绕,所以如果元素是第一个孩子,那么它就不会得到任何东西。

答案 1 :(得分:0)

如果你给.category-list divs和uls一个id

,这是有效的
$('.moveUp').click(function(){

    var theList = $(this).parent(); 
    var theListparentId = $(this).parent().parent().attr('id');     
    var prevList = $(this).parent().parent().prev().children();
    var prevListparentId = $(this).parent().parent().prev().attr('id');

    if(prevListparentId !== undefined){

        $('#'+prevListparentId).html(theList);
        $('#'+theListparentId).html(prevList);

      } else {

        alert('No previous');

      }              
    });

$('.moveDown').click(function(){

    var theList = $(this).parent(); 
    var theListparentId = $(this).parent().parent().attr('id');        
    var nextList = $(this).parent().parent().next().children();
    var nextListparentId =$(this).parent().parent().next().attr('id');

    if(nextListparentId !== undefined){

        $('#'+nextListparentId).html(theList);
        $('#'+theListparentId).html(nextList); 

     } else {

        alert('No next');

     }
   });
});

正如Kingjiv所指出的,如果没有'prevList'你没有获得结果,如果没有prevListparentId !== undefined