2012-09-06 50 views
1

排序.container .elements我试图使用.sort()功能排序列表,以便:通过.elements ID

<div class="centerCnt"> 
    <div class="widgetHelp" id="5">a</div> 
    <div class="widgetHelp" id="1">b</div> 
    <div class="widgetHelp" id="2">c</div> 
    <div class="widgetHelp" id="3">d</div> 
</div> 

我想是这样的:

list = $(".widgetHelp"); 
list.sort(function(a, b) { 
    var aProp = parseInt($(a).attr('id').replace('help_id_','')), 
     bProp = parseInt($(b).attr('id').replace('help_id_','')); 
    return (aProp > bProp ? 1 : aProp < bProp ? -1 : 0); 
}); 

可怕的结果..有人能给我看光吗?

回答

1

jQuery没有公开实现.sort方法,它是一种隐藏的方法,因为它没有实现通常的类似jquery的接口,仅供内部使用。有了这个说法,你仍然可以使用它,它从被添加到库中以来一直没有改变。试试这个:

list = $(".widgetHelp"); 
parent = list.parent(); 
list.sort(function(a, b) { 
    var aProp = parseInt($(a).attr('id').replace('help_id_','')), 
     bProp = parseInt($(b).attr('id').replace('help_id_','')); 
    return (aProp > bProp ? 1 : aProp < bProp ? -1 : 0); 
}); 
parent.append(list); 

http://jsfiddle.net/rz5gL/

+0

我现在看到的逻辑。非常感谢。这很好 –