Html jquery(mobile)-将tap事件绑定到div
如果我有这个html:Html jquery(mobile)-将tap事件绑定到div,html,jquery-mobile,Html,Jquery Mobile,如果我有这个html: <div id="myDiv"></div> 当用户点击myDiv时,我需要打开一个新页面。我有一个外部js文件,其中有: function bindMyDiv(){ $("#myDiv").bind('tap',function(event, ui){ alert("binding"); }) } 但是我不知道从HTML中调用这个,或者这是否是正确的方法。建议?您想在pageinit事件中为它所在的页面调用该函
<div id="myDiv"></div>
当用户点击myDiv时,我需要打开一个新页面。我有一个外部js文件,其中有:
function bindMyDiv(){
$("#myDiv").bind('tap',function(event, ui){
alert("binding");
})
}
但是我不知道从HTML中调用这个,或者这是否是正确的方法。建议?您想在
pageinit
事件中为它所在的页面调用该函数。您可以使用jQuery Mobile中的一些其他页面事件,如:pagecreate
,pageshow
,等等。但我认为pageinit
是您最好的选择
实现将如下所示:
$(document).delegate('#page-id', 'pageinit', function () {
$("#myDiv").bind('tap',function(event, ui){
alert("binding");
})
});
或
您将使用div所在的data role=“page”
元素的id替换#page id
对于#myDiv
元素,此方法优于事件委派,因为直接绑定到元素会在触发事件时产生较少的开销。如果使用事件委派,则事件必须冒泡到委派根。尝试
$("#myDiv").live("tap", function(event){
alert('binding');
});
您可以将其放在onReady
javascript文件中
编辑:
这里的每个人都对处理脚本的不同解决方案提供了非常好的见解,但我认为没有人停止思考,如果他们能帮助改进脚本。“或者,如果这是一个正确的方法”,答案是否定的。也许我过于简化了,但是如果你试图让一个div(或任何DOM元素)打开一个新页面,只需在其周围(或其中,以适当的方式)包装一个锚定标记,并将href设置为
href=“#myNewPage”
和JQM页面上要加载到id=“myNewPage”
jquerymobile的框架设置为自动将JS和AJAX注入普通HTML元素,以提供流畅的用户体验。虽然有时需要绑定触摸事件,但这种情况并不保证代码的级别……这就是jQuery Mobile=)的优点
绑定触摸事件的示例:显示/隐藏dom对象、触发插件的单击等。您不需要将其放置在
文档中。ready
事件处理程序,因为它是事件委托,所以它直接绑定到始终可用的文档元素。另外,.delegate()
比.live()
更受欢迎,并且从jQuery 1.7开始,.live()
被折旧。您是正确的,但是目前jQuery支持到1.6.4,它在上使用live
而不是,这来自.delegate()
:从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。
因此,如果您使用的是jQuery 1.4.2或更新版本,那么jQuery团队建议使用.delegate()
。他不想链接到新的jqm页面,他想将其绑定到函数。
$(document).delegate('#page-id', 'pageinit', bindMyDiv);
$("#myDiv").live("tap", function(event){
alert('binding');
});