我正在开发一个动态创建元素的Phonegap应用程序。可以看到应用here当用户点击手风琴菜单以显示元素选项时,会创建元素。然后,用户可以通过单击菜单中的图像来选择要添加到布局的新元素。浏览器会警告新元素将插入标记为新元素的div中。
这是踢球者,我使用的是jQuery touch插件,能够在屏幕上显示新创建的元素。创建新元素时,会向元素添加class =“touchMove”。问题是我似乎无法将touch功能绑定到新元素。
我尝试过live(),delegate()和on()。我可以点击事件来绑定并在点击时显示警告框但是我无法将触摸事件绑定到新元素。我添加了点击以进行测试。如果我将其改为“触摸”,我什么也得不到,也许是因为它正在寻找为函数定义的参数。 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
});
});
同样,如果我取消注释警报功能并注释掉触摸功能,则警报会起作用。如果我注释掉警报并取消注释触摸功能没有任何反应..在此过程中,我看到没有错误。
使用此功能,页面上有三个元素可以在页面加载时正常接收触摸功能
$('.touchMove').touch({
animate: false,
sticky: false,
dragx: true,
dragy: true,
rotate: false,
resort: true,
scale: false
});
“#2 Touch Me :)”元素运行正常。我正在尝试添加类(“touchMove”正在工作oK),并使用该类将触摸功能附加到新元素。
顺便说一下,触控功能只能在设备(Android,iPad)上运行,因此如果您在实际的计算机浏览器中查看,触控事件将无效。
任何有关此事的帮助将不胜感激。
答案 0 :(得分:1)
为什么不使用
//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'。
您还可以包含鼠标事件,因此当没有可用的触摸屏时,功能也可以使用。