在iPad ios 5.1中,https://s140452.gridserver.com/property/4123(在横向视图中)
单击“显示详细信息”按钮大约需要15秒才能在iPad上执行。有时会崩溃移动游猎。它会在chrome或firefox中立即发生。
我做错了吗?
$j('#locations').delegate('.sidebar-expand', 'click', function(){
var $me = $j(this),
$locations = $j('#locations');
if($locations.hasClass('expand')) {
$locations.removeClass('expand');
} else {
$locations.addClass('expand');
}
});
答案 0 :(得分:2)
首先,使用on
代替delegate
,因为它在1.7+中引入了一些小的性能提升,但更重要的是它成为了最佳实践。语法相同:
$j('#locations').on('.sidebar-expand', 'click', function(){...
其次,iOS Safari JS非常慢。 Laughably缓慢 - 头发拉得很慢。我的iPad 1 safari JS基准测试比我的PC上的Chrome慢38倍。强制jQuery遍历和匹配选择器的任何类型的事件委托都会大大减慢iOS移动网络上的应用程序速度。
话虽这么说,我敢打赌,如果你使用PhoneGap并将其转换为实际的应用程序,它会运行正常,因为它不会依赖于iOS safari JS引擎。
简而言之,除非必须,否则不要在iOS中使用面向未来的事件观察员。如果您在DOM准备就绪后没有添加.sidebar-expand
个节点,请改用:
$j('.sidebar-expand').on('click', function(){...