Html jquery(mobile)-将tap事件绑定到div

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事件中为它所在的页面调用该函

如果我有这个html:

<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');
});