2011-10-28 28 views
0

我有一個無序列表,可以使用jQuery進行排序。排序功能(s)正常工作,並在下面。每個列表項目在此格式上都有一個ID - id =「post_#」,其中#是唯一編號。我需要在排序後使用列表項目的順序更新隱藏的輸入值,但只有#號。因此,如果項目的順序是> post_3,post_2,post_4,post_1 <然後輸入值將是─值=「3,2,4,1」可更新列表來更新隱藏輸入

這裏是jQuery的我有這麼遠

<script type="text/javascript"> 
    jQuery(document).ready(function(){ 
     jQuery(function() { 
      jQuery("#wpbody-content #post_sortable_list").sortable({ opacity: 0.6, cursor: \'move\', update: function() { 
       var order = $(this).sortable; 

      } 
      }); 
     }); 
    }); 
    </script> 

而且HTML-

<div id="wpbody-content"> 
<ul id="post_sortable_list"> 
<li id="post_1">foo</li> 
<li id="post_2">bar</li> 
<li id="post_3">hello</li> 
<li id="post_4">world</li> 
</ul></div> 

<input type="hidden" name="posts_order" value="" /> 
+1

只要做'var order = $(this).sortable(「serialize」);'會返回一個數組,其id爲post並且結果是3,2,4,1 :) –

回答

1

,你可以這樣做

var order = ''; 
$('#post_sortable_list').find('li').each(function() { 
    order = order + $(this).text().substring(5); 
}); 
$('posts_order').val(order); 

可能我是大錯特錯

+0

哦,我想是吧將是ID attr ... – user800612

0
<script type="text/javascript"> 
    jQuery(document).ready(function(){ 
     jQuery(function() { 
      jQuery("#wpbody-content #post_sortable_list").sortable({ opacity: 0.6, cursor: \'move\', update: function() { 
       var order = $(this).map(function(i, e){ 
        return $(e).attr("id").substring(5); 
       }.join(", "); 

      } 
      }); 
     }); 
    }); 
    </script> 

嘗試使用map獲取所有的Ids,然後將它們加入到一個字符串中。