jquery(移动) - 将tap事件绑定到div

时间:2012-02-21 23:12:21

标签: html5 jquery-mobile

如果我有这个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中调用它的位置,或者这是否是正确的方法。建议?

3 个答案:

答案 0 :(得分:1)

尝试

$("#myDiv").live("tap", function(event){
  alert('binding');
});

您可以将其放在onReady javascript文件

旁边

编辑:

http://jsfiddle.net/R9e6u/

答案 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中的其他一些页面事件,例如:pagecreatepageshow等,但我认为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元素的事件委派,因为直接绑定到元素会在触发事件时产生更少的开销。如果您使用事件委派,则事件必须冒泡到委托根目录。