Javascript 动态元素的AddEventListener?

Javascript 动态元素的AddEventListener?,javascript,jquery,ios,Javascript,Jquery,Ios,在我的页面上,当您向右滑动某个元素时,该元素将移动。我有以下代码来处理这些刷卡: window.addEventListener("touchstart", touchStart, false); window.addEventListener("touchmove", touchMove, false); 问题是,它不仅仅影响我想要滑动的元素。相反,如果我在页面上的任何位置滑动,它将运行touchMove。为了解决这个问题,我尝试: var content = document.getEle

在我的页面上,当您向右滑动某个元素时,该元素将移动。我有以下代码来处理这些刷卡:

window.addEventListener("touchstart", touchStart, false);
window.addEventListener("touchmove", touchMove, false);
问题是,它不仅仅影响我想要滑动的元素。相反,如果我在页面上的任何位置滑动,它将运行
touchMove
。为了解决这个问题,我尝试:

var content = document.getElementById("content");
content.addEventListener("touchstart", touchStart, false);
content.addEventListener("touchmove", touchMove, false);
这种方法是有效的,但是当一个div(通过用户交互)显示在
#content
上时,事件仍然会触发

我考虑的另一个解决方案是将这些事件绑定到
#content
中的元素,即应该启用滑动的元素。问题是,这些元素是动态添加到页面的,所以当在页面加载时调用上述函数时,这些元素不会被考虑。然后我开始使用jQuery的
.on()
方法,如下所示:

$("#content .row").on("touchmove", touchMove, false);
但这根本不是呼叫
touchMove


有没有更好的方法来完成这一切?当事件侦听器仅分配给
#content
时,
touchMove
会在不是
#content
子元素的元素上被调用,这有意义吗?

通过将事件附加到文档并为您所需的元素提供筛选器,尝试这种方法

$(document).on("touchmove", "#content .row", touchMove);
根据注释编辑,您可以通过这种方式获取事件

$(document).on("touchmove", "#content .row", function(event){
       alert(event.target.id);
});

此处不需要选择器后面的
false或true
值,因为大多数事件都是使用
事件冒泡附加的。
。在本例中,您可以省略该选项并编写处理程序

您在jquery版本“#content.row”中缺少结束引号。这并不是问题所在,我只是很快写了这篇文章,但没有引用。这是
$(文档)。在(事件,选择器,处理程序)
上,所以你为你
$(文档)。在(“touchmove”,选择器,touchmove)
上,当我写问题时,你必须用你想移动的元素(可能是
.row
)替换选择器,我写得太快了,因此错过了引文。这不是问题所在。这是可行的,但唯一的问题是
event.target
似乎没有复制到函数中。我试图遵循这里的解决方案,但即使在函数中,
console.log(event.originalEvent.touchs.length)
日志记录未定义。此外,我正在再次查看代码,当我滑动任何元素时,上面代码中的一个简单的
控制台.log()
仍在运行。这真的很奇怪…我真的认为我已经成功了。另外,
even.target
在我从
setFavorite(事件)中删除
事件后起作用
$("#content .row").on("touchmove", touchMove, function(){
   // Your code here
});