0

我在我的页面上使用 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()可以使用?

4

2 回答 2

1

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

当您.change()在这种情况下使用时,jquery 将假定本机 javascript 事件发生此更改。而且它会更快。

看看这里这里,以更好地了解事件在 jquery 上的工作方式。

于 2013-07-29T16:30:12.843 回答
0

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

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

于 2013-07-29T16:31:19.227 回答