Jquery委托未绑定到动态创建的元素
我正在开发一个Phonegap应用程序,它动态创建了元素。当用户点击手风琴菜单以显示元素选择时,可以看到该应用程序创建的元素。然后,用户可以通过单击菜单中的图像来选择要添加到布局中的新元素。浏览器会发出警告,新元素将插入到标记为新元素的div中 这里是关键,我使用jquerytouch插件来拖拽屏幕上新创建的元素。创建新元素时,会将class=“touchMove”添加到元素中。问题是我似乎无法获得touch函数来绑定新元素 我尝试了live()、delegate()和on()。我可以获取一个click事件来绑定,并在单击时显示一个警报框,但我无法获取touch事件来绑定到新元素。我添加了用于测试目的的单击。如果我将其更改为“touch”,我将一无所获,可能是因为它正在寻找要为函数定义的参数。IDKJquery委托未绑定到动态创建的元素,jquery,android,delegates,touch,live,Jquery,Android,Delegates,Touch,Live,我正在开发一个Phonegap应用程序,它动态创建了元素。当用户点击手风琴菜单以显示元素选择时,可以看到该应用程序创建的元素。然后,用户可以通过单击菜单中的图像来选择要添加到布局中的新元素。浏览器会发出警告,新元素将插入到标记为新元素的div中 这里是关键,我使用jquerytouch插件来拖拽屏幕上新创建的元素。创建新元素时,会将class=“touchMove”添加到元素中。问题是我似乎无法获得touch函数来绑定新元素 我尝试了live()、delegate()和on()。我可以获取一个c
$('#newElement').delegate("img","click",function(){
// alert('I was clicked');
$(this).touch({
animate: false,
sticky: false,
dragx: true,
dragy: true,
rotate: false,
resort: true,
scale: false
});
});
同样,如果我取消对alert函数的注释并注释掉touch函数,则alert会工作。如果我注释掉警报并取消对触摸功能的注释,则什么也不会发生。。在这个过程中,我没有看到任何错误
页面上有三个元素接收触摸功能,使用此功能加载页面时,触摸功能正常
$('.touchMove').touch({
animate: false,
sticky: false,
dragx: true,
dragy: true,
rotate: false,
resort: true,
scale: false
});
“#2 Touch Me:)”元素工作正常。我试图添加一个类(“touchMove”工作正常),并使用该类将touch函数附加到新元素
顺便说一句,触摸功能只在设备(Android、iPad)上运行,因此如果你在实际的电脑浏览器中查看,触摸事件将不起作用
对此事的任何帮助都将不胜感激 为什么不使用
//start to touch
$("body").on("touchstart mousedown","#newElement",function(e){
alert("you started to touch");
});
//moving
$("body").on("touchmove mousemove","#newElement",function(e){
alert("you moved");
});
//finished touching
$("body").on("touchstop mouseup","#newElement",function(e){
alert("you stopped touching");
});
您需要使用“live”或“on”,因为文档加载时所有事件都会绑定,所以在初始加载后绑定到添加到dom的对象的任何新事件都需要包含在回调中,或者使用jquery“live”或“on”绑定
您还可以包括鼠标事件,以便在没有触摸屏可用时功能也能工作。最好的方法应该是
$而不是$。live
$('mostpossibleouterellmntid')。on('touchstart','trackableinnerlments',function(){/*code Here*/})代码>是,大卫是正确的。如果您使用的是jquery1.7以后的版本,那么应该使用“on”而不是“live”。在这里解释差异的文章->编辑的回答我在Ed和David提到的每个电话上都用过。这个问题是插件生成的触摸事件没有绑定到新元素。我不能拖动新元素,因为我可以在页面加载时将具有该函数的元素添加到新元素中。我正在使用我正在使用$(“.touchMove”).on(“touchstart mousedown”,函数(e){alert(“您开始触摸”);$(此)。touch({动画:false,粘性:false,dragx:true,dragy:true,旋转:false,resort:true,缩放:false});}); 警报可以工作,但touch()函数仍然没有绑定。还有其他建议吗?