1

在 iPad ios 5.1 中,https://s140452.gridserver.com/property/4123(横向视图)

单击“显示详细信息”按钮在 iPad 上执行大约需要 15 秒。有时它会导致移动 Safari 崩溃。它会在 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');
    }
});
4

1 回答 1

2

首先,使用on代替,delegate因为它在 1.7+ 中引入了一些小的性能提升,但更重要的是它正在成为最佳实践。相同的语法:

$j('#locations').on('.sidebar-expand', 'click', function(){...

其次,iOS Safari JS 非常慢。可笑的慢 - 头发拉得很慢。我的 iPad 1 safari JS 在我的 PC 上的基准测试比 Chrome 慢 38 倍。任何强制 jQuery 遍历和匹配选择器的事件委托类型都会显着降低您在 iOS 移动 Web 上的应用程序的速度。

话虽如此,我敢打赌,如果您使用 PhoneGap 并将其转换为实际的应用程序,它会运行良好,因为它不会依赖于 iOS safari JS 引擎。

简而言之,除非必须,否则不要在 iOS 中使用面向未来的事件观察器。如果您.sidebar-expand在 DOM 准备好后不添加节点,请改用它:

$j('.sidebar-expand').on('click', function(){...
于 2012-05-01T16:29:36.227 回答