Jquery委托未绑定到动态创建的元素

Jquery委托未绑定到动态创建的元素,jquery,android,delegates,touch,live,Jquery,Android,Delegates,Touch,Live,我正在开发一个Phonegap应用程序,它动态创建了元素。当用户点击手风琴菜单以显示元素选择时,可以看到该应用程序创建的元素。然后,用户可以通过单击菜单中的图像来选择要添加到布局中的新元素。浏览器会发出警告,新元素将插入到标记为新元素的div中 这里是关键,我使用jquerytouch插件来拖拽屏幕上新创建的元素。创建新元素时,会将class=“touchMove”添加到元素中。问题是我似乎无法获得touch函数来绑定新元素 我尝试了live()、delegate()和on()。我可以获取一个c

我正在开发一个Phonegap应用程序,它动态创建了元素。当用户点击手风琴菜单以显示元素选择时,可以看到该应用程序创建的元素。然后,用户可以通过单击菜单中的图像来选择要添加到布局中的新元素。浏览器会发出警告,新元素将插入到标记为新元素的div中

这里是关键,我使用jquerytouch插件来拖拽屏幕上新创建的元素。创建新元素时,会将class=“touchMove”添加到元素中。问题是我似乎无法获得touch函数来绑定新元素

我尝试了live()、delegate()和on()。我可以获取一个click事件来绑定,并在单击时显示一个警报框,但我无法获取touch事件来绑定到新元素。我添加了用于测试目的的单击。如果我将其更改为“touch”,我将一无所获,可能是因为它正在寻找要为函数定义的参数。IDK

$('#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()函数仍然没有绑定。还有其他建议吗?