javascript - 将 jQuery 事件应用于所有类元素?

标签 javascript jquery mobile-safari dom-events

我有以下代码,允许运行 iOS 的用户移动 <div>同类.drag在页面上左右。当存在一个 .drag 时,这很好用, 但当它有两个实例时无法工作。是否可以让代码找到所有 <div>的,然后允许它们可拖动?

var drag = $(".drag")[0];
    xPos = drag.offsetWidth / 2;
    yPos = drag.offsetHeight / 2;
    drag.addEventListener("touchmove", function() {
        event.preventDefault();
        $(this).css({
        'left' : event.targetTouches[0].pageX - xPos + 'px', 
        'top' : event.targetTouches[0].pageY - yPos + 'px'
    });
});

最佳答案

当您使用 $(selector)[0] 时,您将获得与选择器匹配的第一个 DOM 元素。使用 .each() 代替将事件监听器添加到匹配选择器的所有元素:

$(".drag").each(function () {
    var drag = this;
    xPos = drag.offsetWidth / 2;
    yPos = drag.offsetHeight / 2;
    drag.addEventListener("touchmove", function() {
        event.preventDefault();
        $(this).css({
          'left' : event.targetTouches[0].pageX - xPos + 'px', 
          'top' : event.targetTouches[0].pageY - yPos + 'px'
        });
    });
});​

关于javascript - 将 jQuery 事件应用于所有类元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335859/

相关文章:

javascript - 如何防止我的表单操作 (html) 使用 javascript?

javascript - 将一个值分配给 JSON 中的多个名称

javascript - 如何仅解析选定类的ul标签数据

jquery - 将多行文本与元素分开

javascript - 使函数相互依赖

javascript - 为什么 web audio api 振荡器不能在 Safari Mobile 中播放?

javascript - 我想根据客户端系统时区更改日期和时间

javascript - 将 Canvas 调整为更大的图像并将其发送到服务器

javascript - 更改 :hover on iPad So First Touch is Registered as onclick and :hover Functionailty Still Works

javascript - 如何在我的移动网页上禁用多点触控缩放?