为什么.live()减慢了我的页面?

时间:2013-07-29 16:15:56

标签: jquery

我在我的页面上使用JQuery代码将用户的选择从下拉列表发送到服务器。出于某种原因,我使用.live()这样:

$(".rNameSelect:not(.srchCntnt .rNameSelect)").live("change", function(){
        var rName=$(this).val();
        $("#managersViewTabs .mgrCntnt").load("managerview.do?type=report&reportName=" + encodeURIComponent(rName));
    }); 

每次点击下拉列表中的其他选项时页面都会逐渐变慢!当我改变它时:

$(".rNameSelect:not(.srchCntnt .rNameSelect)").change(function(){
        var rName=$(this).val();
        $("#managersViewTabs .mgrCntnt").load("managerview.do?type=report&reportName=" + encodeURIComponent(rName));
    }); 
问题解决了!为什么.live()会变慢?我真的想要.live().change()可以使用吗?

2 个答案:

答案 0 :(得分:1)

当您使用.live()时,它将像触发器一样工作,并且脚本将需要继续运行直到此操作发生。 并且它将消耗RAM渐变。

当你在这种情况下使用.change()时,jquery会假设本机javascript事件发生了这种变化。它会更快。

查看herehere,了解事件如何在jquery上运行。

答案 1 :(得分:0)

.live()方法很慢,因为它仅用于在文档上注册事件处理程序。 您的事件始终一直委托给文档。如果您的DOM很深,这可能会影响性能。

我的建议,使用.on()方法,因为你在部件中设置了你想要的事件处理程序。