1

私はこのHTMLを持っています

<td colspan="4" class="item"> DERBY LINE, VT 05830<br>
    <label for="" data-sort="16.26">UPS Ground $16.26</label><br>
    <label for="" data-sort="27.57">UPS 3 Day Select&reg; $27.57</label><br>
    <label for="" data-sort="33.87">UPS 2nd Day Air&reg; $33.87</label><br>
    <label for="" data-sort="72.82">UPS Next Day Air $72.82</label><br>
    <label for="" data-sort="7.99">USPS Priority $7.99</label><br>
    <label for="" data-sort="9.61">FEDEX SmartPost&reg; FedEx Delivered Via USPS $9.61</label><br>
    &nbsp;
    <input type="button" name="Button5" id="Button5" onmouseout="this.className='btn'" onmouseover="this.className='btn_over'" onclick="document.shipquote.action='shipquote.asp?action=clean';document.shipquote.submit();" value="Clear" class="btn">
</td>

そして、「データソート」属性でソートする必要があります。現在、 この要素ソーターを使用し ていますが、スクリプトを実行すると、これが返されます

<td colspan="4" class="item"> DERBY LINE, VT 05830<br>
    <label for="" data-sort="16.26">UPS Ground $16.26</label><br>
    <label for="" data-sort="27.57">UPS 3 Day Select&reg; $27.57</label><br>
    <label for="" data-sort="33.87">UPS 2nd Day Air&reg; $33.87</label><br> 
    <label for="" data-sort="7.99">USPS Priority $7.99</label><br>
    <label for="" data-sort="72.82">UPS Next Day Air $72.82</label><br>
    <label for="" data-sort="9.61">FEDEX SmartPost&reg; FedEx Delivered Via USPS $9.61</label><br>
    &nbsp;
    <input type="button" name="Button5" id="Button5" onmouseout="this.className='btn'" onmouseover="this.className='btn_over'" onclick="document.shipquote.action='shipquote.asp?action=clean';document.shipquote.submit();" value="Clear" class="btn">
</td>

ご覧のとおり実行されますが、何らかの理由で属性の最初の番号だけが取得されます。私が使用している呼び出しは次のとおりです。

$('.item label').sortElements(function(a, b){
    return $(a).attr("data-sort") > $(b).attr("data-sort") ? 1 : -1;
});       

私は何を間違っていますか?

4

1 に答える 1

5

現在、各値を文字列として扱い、1 - 9 のそれぞれの順序で並べ替えているparseFloat()ようです。比較が正しく行われるように、値を文字列から浮動小数点数に変換するために使用する必要があります。

$('.item label').sortElements(function(a, b){
   return parseFloat($(a).attr("data-sort")) > parseFloat($(b).attr("data-sort")) ? 1 : -1;
});  

または、.data()代わりにメソッドを使用すると、数値が浮動小数点数として自動的に解釈されます。

$('.item label').sortElements(function(a, b){
   return $(a).data("sort") > $(b).data("sort") ? 1 : -1;
});  
于 2013-02-06T21:14:32.750 に答える