此功能可以对我的链接进行排序,就像Chrome / Safari / Firefox上的魅力一样,但在IE中则不然。有人可以告诉我为什么吗?
症状:一切都消失了(第2行)没有出现任何内容(第3行)
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>
SCRIPT :
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(点击“流派”按钮)
答案 0 :(得分: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;
});
<强> FIDDLE 强>
答案 1 :(得分:0)
尝试使传递给sort方法的比较函数返回一个数字而不是布尔值,即
if (a.innerHTML > b.innerHTML) { return 1; };
JS sort works in Firefox but not IE - can't work out why可能重复。