使用 jQuery 处理程序是否更好?

发布于 2024-12-01 02:46:40 字数 486 浏览 3 评论 0原文

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

$(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 个元素,资源最差)。

你觉得怎么样?

I mean, if I have this handler :

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

linked to "400" elements for example, it will be slower than

function myFunct() {
    // some
{

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

because in fact I need to call that function only when I "change" somethings (so I don't understand why I need to handle 400 elements, worst of resource).

What do you think about?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

宁愿没拥抱 2024-12-08 02:46:40

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

不过,您仍然可以以高性能的方式使用 jQuery,只需使用一个委托 处理程序。

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

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

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

Yes it will be slower since the browser must attach a handler all of those elements, which could cause a "lag" on page load during which your user might be able to interact with elements which have no handler code attached to them.

You can still use jQuery in a performant way, however, using just one delegated handler.

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

Update! jQuery 1.7 example (using .on):

$('#container').on("change", ".myElement", function () {
    myFuct(this);
    return false;
}); 
浪荡不羁 2024-12-08 02:46:40

开始吧:

$(function() {

    function myFunct() { ... }

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

});

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

Here you go:

$(function() {

    function myFunct() { ... }

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

});

The trick is to define one function object, and then use that one function as the change handler for all your elements.

り繁华旳梦境 2024-12-08 02:46:40

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

http://jsperf.com/testaaa

jQuery 的调用:67,194/

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

I think that second one is better in this case. You can use jQuery inside your function, too

http://jsperf.com/testaaa

jQuery's call: 67,194/sec

your function calls: 114,142,715/sec

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文