如果我有这个HTML:
<div id="myDiv"></div>
和这个CSS:
#myDiv{
background:url('../images/someImage.png') no-repeat;
background-size:100%;
width:44px;
height:44px;
}
当用户点击myDiv时,我需要打开一个新页面。我有一个外部的js文件,我有这个:
function bindMyDiv(){
$("#myDiv").bind('tap',function(event, ui){
alert("binding");
})
}
但我不明白从HTML中调用它的位置,或者这是否是正确的方法。建议?
答案 0 :(得分:1)
尝试
$("#myDiv").live("tap", function(event){
alert('binding');
});
您可以将其放在onReady
javascript文件
编辑:
答案 1 :(得分:1)
这里的每个人都为您提供了很好的洞察力,可以帮助您处理脚本,但我认为没有人会认为他们应该帮助改进您的脚本。 “或者,如果这是解决这个问题的正确方法”,答案是否定的。也许我过度简化了,但是如果你想要一个div(或任何DOM元素),那么使用JQM打开一个新页面只需在它周围包裹一个锚标记(或者在其中,以适当的方式) )并将您的href设置为href="#myNewPage"
,并将JQM页面上的ID加载到id="myNewPage"
jQuery Mobile的框架工作设置为自动注入JS&amp; AJAX转换为普通的HTML元素,提供流畅的用户体验。虽然有时需要绑定触摸事件,但这种情况并不能保证代码级别......这就是jQuery Mobile的优点=)。
何时绑定触摸事件的示例:显示/隐藏dom对象,触发插件的单击等。
答案 2 :(得分:0)
您希望在pageinit
事件中为其所在的页面调用该函数。您可以使用jQuery Mobile中的其他一些页面事件,例如:pagecreate
,pageshow
等,但我认为pageinit
是您最好的选择。
实现看起来像这样:
$(document).delegate('#page-id', 'pageinit', function () {
$("#myDiv").bind('tap',function(event, ui){
alert("binding");
})
});
OR
$(document).delegate('#page-id', 'pageinit', bindMyDiv);
您可以使用您的div所在的#page-id
元素的ID替换data-role="page"
。
此方法优先于#myDiv
元素的事件委派,因为直接绑定到元素会在触发事件时产生更少的开销。如果您使用事件委派,则事件必须冒泡到委托根目录。