5

リンクを並べ替えるこの機能は、Chrome/Safari/Firefox では魅力的に機能しますが、IE では機能しません。誰かが理由を教えてもらえますか?

症状: すべてが消える (line2) 何も表示されない (line3)

HTML:

 <div class="genres">
   <a title="90 items" href="?genre=absurdism"><span>absurdism</span></a>
   <a title="83 items" href="?genre=action"><span>action</span></a>
   <a title="322 items" href="?genre=adult"><span>adult</span></a>
   <a title="2974 items" href="?genre=adventure"><span>adventure</span></a>
   <a title="106 items" href="?genre=about+comics"><span>about comics</span></a>
 </div>

スクリプト:

sorted = $('.genres a').sort(function(a, b) {
    return a.innerHTML > b.innerHTML
});
$('.genres').html('');
sorted.each(function(i, a) {
    $('.genres').append(a)
});

フィドル: http://jsfiddle.net/MWkJg/2/

このコードのオンライン ページはhttp://www.lambiek.net/webshop.html (「ジャンル」ボタンをクリック) にあります。

4

2 に答える 2

4

これを置き換える必要があります:

$('.genres').html('');

$('.genres').empty();

htmlプロパティを使用してinnerHTMLコンテンツを削除しますが、これはブラウザー間で矛盾して処理されます。emptyただし、 はこのremoveChild方法を使用しており、ブラウザー間で一貫して動作します。(ちなみに、jQuery 2.0 は を使用しtextContentます。)

また、sortメソッドが一貫して機能するためには、数値を返す必要があります。

var sorted = $('.genres a').sort(function(a, b) {
    return a.innerHTML < b.innerHTML ? -1 :
            a.innerHTML === b.innerHTML ? 0 :
            1;
});

フィドル

于 2013-07-08T00:10:57.790 に答える
0

sort メソッドに渡される比較関数がブール値ではなく数値を返すようにしてみてください。

if (a.innerHTML > b.innerHTML) { return 1; };

JS sortの重複の可能性は Firefox では機能しますが、IE では機能しません - 理由がわかりません

于 2013-07-08T00:20:42.333 に答える