甚至更好地使用jQuery处理程序?

时间:2011-08-20 16:50:49

标签: jquery html css event-handling

我的意思是,如果我有这个处理程序:

$(document).ready(function() {
    $('.myElement').change(function() {
        // some
    });             
});
例如,

链接到“400”元素,它将慢于

function myFunct() {
    // some
{

<select class="myElement'" onchange="myFunct(this);return false">
    // one of 400 elements. Each of this use that onchange link
</select>

因为实际上我只需要在“改变”某些事情时调用该函数(所以我不明白为什么我需要处理400个元素,最糟糕的资源)。

你怎么看?

3 个答案:

答案 0 :(得分:7)

是的,它会慢一些,因为浏览器必须附加一个处理程序所有这些元素,这可能会导致页面加载“滞后”,在此期间您的用户可能能够与没有附加处理程序代码的元素进行交互。

但是,您仍然可以使用jQuery,只使用一个delegated处理程序。

$('#container').delegate(".myElement", "change", function () {
    myFuct(this);
    return false;
}); 

更新! jQuery 1.7示例(使用.on):

$('#container').on("change", ".myElement", function () {
    myFuct(this);
    return false;
}); 

答案 1 :(得分:2)

你走了:

$(function() {

    function myFunct() { ... }

    $('.myElement').change( myFunct ); 

});

诀窍是定义一个函数对象,然后使用该函数作为所有元素的更改处理程序。

答案 2 :(得分:1)

我认为在这种情况下第二个更好。您也可以在函数中使用jQuery

http://jsperf.com/testaaa

jQuery的电话:67,194 /秒

你的函数调用:114,142,715 /秒