【问题标题】:Does jquery live slow down websites?jquery live 会减慢网站速度吗?
【发布时间】:2009-09-17 04:42:07
【问题描述】:

我有一个问题,我正在使用 ajax 加载所有内容的 jquery U.I 选项卡。现在,我现在每次单击选项卡时都会将部分视图加载到该选项卡中。

现在在这个部分视图中,它们是 javascript 文件,它们使用 jquery 来绑定该选项卡中需要的所有事件以及我正在使用的一些 jquery 插件。

现在每次加载该选项卡时都会加载所有这些脚本。如果它被点击 10 次,那么这些脚本将被加载 10 次,这意味着现在每个按钮都将有 10 个相同的事件,这意味着如果有人点击该按钮,10 个事件将全部触发并执行相同的操作。

所以我需要找到一些解决方案,将所有脚本移出并放在主页上,然后使用 jquery.live 或其他解决方案。

我尝试对 UI 选项卡使用 jquery 缓存,但这不起作用,因为当更改效果选项卡 B 时说选项卡 A 中的某些内容意味着我需要重新加载选项卡 B,但脚本无法重新加载,否则我运行陷入和现在一样的问题。

【问题讨论】:

    标签: jquery jquery-ui


    【解决方案1】:

    Read here 的精彩演示涵盖了 jQuery 的事件委托。

    看完上面的再看这个:

    // using jQuery 1.4.2
    (function($){
        // You can cache the container you plan on using for event delegation.
        //   If using $(document).ready(...) to call the below functions
        //     your "container" element should already exist in the DOM
        //   (the .specialAjaxLink elements don't have to exist yet).
        var container = $("#container");
    
        // whenever an element with the class "specialAjaxLink" is clicked
        // while inside your container element execute the handler on them.
        container.delegate(".specialAjaxLink", "click", function(){
            // do something amazing...
            solveWorldHunger(this);
            // stop propagation and prevent default...
            return false;
        });
    }(jQuery));
    

    在使用上述方法时,您不必担心性能问题,除非您正在创建像 gmail、docs 或 google wave 这样复杂的应用程序。

    【讨论】:

      【解决方案2】:

      通常,我总是在 bind() 之前调用 unbind()

      【讨论】:

      • 我没有关注?我可以看一些例子吗?这如何与插件一起使用?然后“现场”执行此操作是快还是慢?
      • 还有就是为了解除绑定吗?
      • 在 remove() 和 bind() 之前调用 unbind() 是防止同一元素上的多个绑定的好方法。如果创建和删除了很多东西(比如按钮上的动画悬停效果),我更喜欢 live()
      • 但是被插件绑定的控件呢?我知道有些插件有破坏和类似的东西,但很多没有。
      • 我也不明白为什么只有某些事情会造成麻烦。就像所有东西都被重新绑定 X 次一样,为什么只有其中一些会导致奇怪的结果,例如当您单击一个按钮时,它会执行 10 次操作,而其他按钮仅执行一次操作。
      【解决方案3】:

      考虑使用事件委托,而不是使用 .live()。监听容器内的事件,然后检查标签和属性来决定如何处理它。

      如果向 DOM 添加一堆元素,效率会更高。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多