Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery是否会降低网站的运行速度?_Jquery_Jquery Ui - Fatal编程技术网

jquery是否会降低网站的运行速度?

jquery是否会降低网站的运行速度?,jquery,jquery-ui,Jquery,Jquery Ui,我在使用jQueryU.I选项卡时遇到了一个问题,它用ajax加载所有内容。现在我有了它,每次你点击一个标签,一个局部视图就会加载到这个标签上 现在在这个局部视图中,他们的javascript文件使用jquery绑定该选项卡中需要的所有事件,以及我正在使用的一些jquery插件 现在,每次加载该选项卡时,都会加载所有脚本。如果点击10次,那么这些脚本会被加载10次,现在每个“我的按钮”上都会有10个相同的事件,这意味着如果有人点击该按钮,10个事件都会触发并执行相同的操作 因此,我需要找到一些解

我在使用jQueryU.I选项卡时遇到了一个问题,它用ajax加载所有内容。现在我有了它,每次你点击一个标签,一个局部视图就会加载到这个标签上

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

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

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


我尝试对U.I选项卡使用jquery缓存,但这不起作用,因为选项卡A中的某些内容在更改影响选项卡B时表示我需要重新加载选项卡B,但脚本无法重新加载,否则我会遇到与现在相同的问题 如果向DOM中添加一组元素,效率会更高。

这是一个关于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这样复杂的应用程序。

我不明白?我能看一些例子吗?插件是如何工作的?执行此操作的速度是快还是慢,然后是“活动的”?也就是说,在remove()和bind()之前调用unbind()可以防止对同一元素进行多个绑定。如果创建和删除了很多东西(比如按钮上的动画悬停效果),我更喜欢live(),但是由插件绑定的控件呢?我知道有些插件有破坏功能,但很多插件没有。我也不明白为什么只有某些东西会引起麻烦。就像所有的东西都被重新索引了X次,所以为什么只有其中一些会导致奇怪的结果,比如当你点击一个按钮时,它会执行10次操作,而其他按钮只执行一次操作。我需要一些示例,因为我没有跟随。这里有一个快速链接-向下滚动一点,我不确定我应该看什么。这里,试试这个链接,或者谷歌的“jquery事件委派”Scott,jquery live()实际上是一种事件委派形式。唯一的区别是您自己不选择容器(您注册事件的容器),但jQuery为您选择容器。