Javascript JQueryMobile按钮和单击
在JQueryMobile中,将click/vclick事件绑定到按钮的正确方法是什么 我尝试过使用Javascript JQueryMobile按钮和单击,javascript,jquery,jquery-mobile,button,Javascript,Jquery,Jquery Mobile,Button,在JQueryMobile中,将click/vclick事件绑定到按钮的正确方法是什么 我尝试过使用$().bind(“单击”,function(){})和$()。在(“单击”,function(){})上但我从未从控制台得到响应 我在index.html中的按钮设置如下: 编辑 <div data-role="page" data-title="OneStop Mobile" class="ui-responsive-panel" id="homepage">
$().bind(“单击”,function(){})
和$()。在(“单击”,function(){})上代码>但我从未从控制台得到响应
我在index.html中的按钮设置如下:
编辑
<div data-role="page" data-title="OneStop Mobile" class="ui-responsive-panel" id="homepage">
<div data-role="panel" data-dismissable="false" id="optionsPanel">
<div>
<ul data-role="listview">
<li> <a href="#" id="store">store</a> </li>
<li> <a href="#" id="download">Download</a> </li>
<li> <a href="#" id="check">Check</a> </li>
<li> <a href="#" id="clear">Clear</a> </li>
<ul>
</div>
</div>
</div>
根据JQMobile api和演示页面,这应该是可行的,但我从来没有在我的设备或浏览器上看到任何事情发生。您的问题是,在绑定事件时,您绑定到的元素还不是DOM的一部分
您需要通过在ready
事件或JQM页面的中调用函数来确保绑定事件时元素已经是DOM
的一部分,或者可以通过调用重载版本的.on函数来使用事件委派
比如说
在pageinit
事件期间进行绑定(这实际上也使用事件委派来绑定pageinit
事件)
与事件委派一起使用
$(document).on('click', '#store', function() {
console.log('This should Work!');
});
请注意,事件委派的工作方式是将事件绑定到现有的更高级别元素,然后在事件冒泡时检查选择器。一般来说,您实际上希望将事件绑定到尽可能靠近您检查的元素的位置,但是如果需要,您可以一直绑定到文档
作为一个旁注,使用我提供的第一种方法也可以。但是,从jQuery 1.7开始。只将委托绑定到。这是首选的(.bind
保留为向后兼容)
你能提供你的html代码吗?这个存储是静态的还是生成的?这取决于你把JS文件/代码放在哪里。JS代码在一个名为JS的文件夹www/JS/index.JS中,这部分工作正常。按钮是静态的。@Omar它是静态的,但它只是委托给.on
,并且根据jQuery。on是首选的。bind实际上只为向后兼容而保留。但是,既然您提到了它,我将把它合并到我的回答中,使之更清楚。@Omar能否请您解释一下这个jqm“我们建议绑定到这个事件而不是DOM ready(),因为无论是直接加载页面还是将内容作为Ajax导航系统的一部分拉到另一个页面,这都会起作用。”@Omar公平地说,在这个特殊情况下,ready()
也可以工作,但您是对的,pageinit
是首选,这就是为什么我在回答中没有将其作为示例的原因。@Jack.ready()
肯定会工作,但它的“功能不适合jQM,因为它使用Ajax导航”。@Omar True,出于某种原因,我认为这是一个单页应用程序,按钮是唯一动态添加的东西,但页面是DOM的一部分(我意识到OP的问题中没有任何东西表明任何一种方式…)。
//passing in the selector as the second parameter calls the overloaded version of .on
$(document).on('pageinit', '#myStorePage', function() {
$("#store").bind("click", function(event, ui) {
console.log("This should Work!")
});
});
$(document).on('click', '#store', function() {
console.log('This should Work!');
});
$(document).on('click','#store', function(event) {
alert("WORK DAMNIT!")
});