javascript - 哪个 jQuery 代码更高效?

标签 javascript jquery performance

出于好奇,下面哪个代码效率更高(如果两者都不是,最好的方法是什么?)

背景故事 - 构建一个小型图像轮播,所讨论的代码与控件(上一个、暂停/播放、下一个)有关

<ul class="controls"> 
    <li> <a href="#" class="prev">  Previous Image </a> </li>
    <li> <a href="#" class="pause"> Pause          </a> </li>
    <li> <a href="#" class="next">  Next Image     </a> </li>
</ul>

// inside document.ready()
$(".controls a").click(function() {
    var cur_class = $(this).attr("class");

    if (cur_class == "pause") {
        // do something
    } else if (cur_class == "prev") {
        // do something
    } else if (cur_class == "next") {
        // do something
    }
)};

// OR THIS
$(".controls a.prev").click(function() { /* do something */ });
$(".controls a.pause").click(function() { /* do something */ });
$(".controls a.next").click(function() { /* do something */ });

谢谢 M。

最佳答案

最好的选择是使用 .delegate() .它是添加到 jQuery 1.4.2 的新事件,比仅使用点击要好得多。

.click() 为每个 anchor 标记添加一个新事件。

.delegate()在添加新事件(仅针对特定的点击元素)之前“等待”点击(或指定的任何事件)。

$(".controls").delegate("a", "click", function() {

    var cur_class = $(this).attr("class");

    if (cur_class == "pause") {
        // do something
    } else if (cur_class == "prev") {
        // do something
    } else if (cur_class == "next") {
        // do something
    }

}

注意:代码未经测试,阅读.delegate() jQuery 文档中的信息以获取更多信息。

也许你需要给 <ul> 添加一个 id :

( <ul class="controls" id="ul_id"> ) 然后使用 $("#ul_id").delegate("a", "click", function() { / ... } .

希望对您有所帮助。

关于javascript - 哪个 jQuery 代码更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3104709/

相关文章:

javascript - 使用字符串数组循环对象

javascript - 使用 jquery 验证插件时重置表单

javascript - 如何在没有 form.submit 的情况下在输入键表单提交时执行 js 代码?

objective-c - iOS模拟器键盘输入延迟

performance - Redis 缓存读取性能 - 根键/值对与层次结构?

javascript - 正则表达式:替换注释之间的内容

javascript - 运行 "if"的点击函数然后继续

javascript - Bootstrap Popover 在加载 Ajax 时不工作

android - 我应该让私有(private)成员引用我的 Activity 观点吗?

javascript - 如何以编程方式选择 jsTree 中的节点并打开所有父节点