2013-05-08 41 views
0

我是根據按鈕clicked.Here是我所創造和擁有的內容是這樣改變位置向上和向下列表中通過了jQuery,JavaScript的

<ul> 
    <li> 
     <div> 
      <span>&nbsp;&nbsp;&nbsp;&nbsp;cat3_sub3</span> 
      &nbsp;&nbsp;&nbsp;&nbsp; 
      <div style="text-align:right;float:right;"> 
       [ <a href="#" class="up_sub" id="3_3">Up</a> ] 
       [ <a href="#" class="down_sub" id="3_3">Down</a> ] 
      </div> 
     </div> 
    </li> 
    <li> 
     <div> 
      <span>&nbsp;&nbsp;&nbsp;&nbsp;cat3_sub2</span> 
      &nbsp;&nbsp;&nbsp;&nbsp; 
      <div style="text-align:right;float:right;"> 
       [ <a href="#" class="up_sub" id="2_3">Up</a> ] 
       [ <a href="#" class="down_sub" id="2_3">Down</a> ] 
      </div> 
     </div> 
    </li> 
    <li> 
     <div> 
      <span>&nbsp;&nbsp;&nbsp;&nbsp;cat3_sub2</span> 
      &nbsp;&nbsp;&nbsp;&nbsp; 
      <div style="text-align:right;float:right;"> 
       [ <a href="#" class="up_sub" id="1_3">Up</a> ] 
       [ <a href="#" class="down_sub" id="1_3">Down</a> ] 
      </div> 
     </div> 
    </li> 
</ul> 

現在一個無序列表改變位置的列表上工作我想點擊向上或向下鏈接來更改列表。所以對於這個我寫了這樣一個JavaScript

$(document).ready(function(){ 
$(".up_sub,.down_sub").click(function(){ 
    var rank_id = this.id; 
    rank_id = rank_id.split("_"); 
    var rank = (rank_id[0]); 
    var cat_id = rank_id[1]; 
    var max_rank = get_max_rank(cat_id); 
    if ($(this).is(".up_sub")) { 
     if(rank!=max_rank){         //to not to move up than top most 
      var thisLine = $(this).parent(); 
      var prevLine = thisLine.prev(); 
      prevLine.before(thisLine); 
     } 
    } 
    }); 
}); 

但這沒有奏效。我檢查它是否達到使用alert()的功能。它給了迴應。但是名單並沒有改變他們的立場。這背後的原因是什麼?應該做些什麼來改變名單的位置?

+0

是什麼'get_max_rank()'做什麼? – 2013-05-08 06:37:14

+0

'get_max_rank()'從數據庫中獲取最大的排名數。 'max_rank'用於檢查排名最高的'li',以便數據庫中rank的值不被更改 – Robz 2013-05-08 06:45:09

回答

1

嘗試

$('.up_sub').click(function(){ 
    var li = $(this).closest('li'); 
    var prev = li.prev(); 
    if(prev.length){ 
     li.detach().insertBefore(prev); 
    } 
}); 
$('.down_sub').click(function(){ 
    var li = $(this).closest('li'); 
    var next = li.next(); 
    if(next.length){ 
     li.detach().insertAfter(next); 
    } 
}); 

演示:Fiddle

+0

感謝您的幫助 – Robz 2013-05-08 06:48:08

相關問題