【问题标题】:jquery bind dblclick event to multiple elementsjquery 将 dblclick 事件绑定到多个元素
【发布时间】:2014-07-30 18:38:47
【问题描述】:

我正在尝试将 dblclick 事件绑定到我正在迭代的 nodeList 中的 div。 代码如下:

var elems = document.getElementsByClassName("click");
currentLocation = elems[0].id;
for (var i=0; i<elems.length; i++){
    $(elems[i]).dblclick(function() {
            if((elems[i].id) != currentLocation){
                badAnswer = true;
                alert(badAnswer);
            }
        });

    }

currentLocation 是一个全局变量,设置为节点列表的第一个元素 id。 badAnswer 也是一个设置为 false 的全局布尔值。如果双击了与 currentLocation 全局以外的元素匹配的元素,则将 badAnswer 设置为 true。

目前我收到一个未定义的错误,我试图通过在事件处理程序中创建一个局部变量来解决这个错误。这似乎也不起作用,双击时 badAnswer 始终为真,因为 elementID 始终等于最后一个元素的 ID 值。

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    是的,有一个更好的方法:

    var currentLocation = $(".click")[0].id;
    $(".click").on("dblclick", function() {
        if (this.id != currentLocation) {
            badAnswer = true;
        }
    });
    

    【讨论】:

    • 我可以在当前代码中将 elems[i].id 替换为 this.id 吗?但是是的,所有 jquery 解决方案都更加直接
    • @user2210274 -- 是的 -- 您不必遍历 jQuery 集来绑定处理程序。
    • 另外,@user2210274,请注意您可能在 currentLocation 定义中忘记了var...
    • 它实际上是全局定义的,因此没有变量。
    【解决方案2】:
    $('.click').dblClick(function() {
        if(this.id != currentLocation) {
            ...
        }
    });
    

    您已经在使用 jQuery,所以您不妨使用选择器...更简单!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 2017-05-13
      • 1970-01-01
      相关资源
      最近更新 更多