jQuery排序和appendTo在Internet Explorer和Safari中不起作用
jQuery sort and appendTo not working in Internet Explorer and Safari
我使用jQuery sort
和appendTo
函数根据span标记的内容对它们的列表进行重新排序。
它应该很容易,在Firefox和Chrome中运行良好,但在windows上的Internet Explorer 11和Safari 5中不起作用,我找不到原因。
HTML:
<div class="ube-all">
<div class="ube-article">
<span>bbbb</span>
</div>
<div class="ube-article">
<span>aaaaa</span>
</div>
<div class="ube-article">
<span>ccc</span>
</div>
</div>
jQuery脚本:
$(document).ready(function() {
$('.ube-all .ube-article').sort(function(a,b){
return $.trim($(a).find('span').eq(0).text())>$.trim($(b).find('span').eq(0).text());
}).appendTo('.ube-all');
});
jsFiddle在这里:
https://jsfiddle.net/nxsby7rs/
知道吗?
数组排序方法回调函数应该返回负、正或0
的整数,而不是从>
运算符中获得的布尔值。
编写排序函数的正确方法是比较字符串,并根据比较结果返回一个整数。
工作示例:
$(document).ready(function() {
$('.ube-all .ube-article').sort(function(a,b){
var stra = $.trim($(a).find('span').eq(0).text());
var strb = $.trim($(b).find('span').eq(0).text());
if (stra < strb) { return -1; }
if (stra > strb) { return 1; }
return 0;
}).appendTo('.ube-all');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="ube-all">
<div class="ube-article">
<span>bbbb</span>
</div>
<div class="ube-article">
<span>aaaaa</span>
</div>
<div class="ube-article">
<span>ccc</span>
</div>
</div>
由于排序函数需要整数,因此真正的问题似乎是:
为什么这些代码在某些浏览器中可以工作?
不同的浏览器使用不同的排序算法。使用一些排序算法,可以将true
类型转换为正1
,将false
类型转换为0
,并得到有意义的结果。然而,这是在未定义行为的土地上,应该避免。
相关文章:
- 视频HTML没有'无法在Internet Explorer 11上工作
- 在Safari执行javascript之前对其进行修改
- Safari(Mac OS)上的jQuery平滑滚动问题
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- Internet Explorer缺少占位符支持,特别是密码字段
- Internet Explorer中的文本换行错误
- 为什么我在Internet Explorer上看不到html元素
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- document.applet.method在Mounatin Lion上抛出safari 6+JDK7异常
- 主干网.与Safari同步问题
- internet explorer 8兼容模式下的Youtube api错误
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- Jquery:输入类型=“”;按钮“;使用.click()函数在Internet Explorer和Safari中不起作
- 在 Safari 和 Internet Explorer 中无限重载循环
- JavaScript脚本适用于Firefox,Chrome,Safari,Internet Explorer< 9,但不
- jQuery排序和appendTo在Internet Explorer和Safari中不起作用
- Embed适用于Firefox和Safari,但不适用于Internet Explorer 8
- Node.js应用程序无法在Safari或Internet Explorer中运行
- Safari和Internet Explorer中的Javascript问题
- internet explorer-IE中存在Javascript问题,但FF、Chrome或Safari中没有