jQueryMobile将单击事件添加到按钮而不是更改页面

时间:2011-04-15 11:50:17

标签: javascript jquery jquery-mobile

<p><a href="index.html" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="a" onclick="doSomething(); return false">VERIFY</a></p>

我正在使用上面的代码,这是一个带有onClick()设置的jQM按钮。调用onclick并执行doSomething()但在此之后,jQM显示“错误加载页面”消息。

我怎么能抑制错误?在这种情况下,我想要jQM按钮,但不希望它改变页面。

由于

4 个答案:

答案 0 :(得分:44)

由于您使用的是jQuery,我建议您使用jQuery来连接您的事件。据说使用e.preventDefault();e.stopImmediatePropagation();应该阻止jQuery mobile对<a/>执行默认操作。

$("#verify").click(function (e) {
    e.stopImmediatePropagation();
    e.preventDefault();
    //Do important stuff....
});

更新

使用现有标记的更好方法是简单地将rel="external"添加到<a/>onclick应该正确行事。

<p>
  <a href="index.html" data-role="button" data-icon="arrow-r" data-iconpos="right" data-theme="a" onclick="doSomething(); return false" rel="external">VERIFY</a>
</p>

这将有效,因为jQuery Mobile会将链接视为普通<a/>标记,返回false只会停止默认操作。

答案 1 :(得分:6)

我认为您的问题是您的按钮上有多个操作并且正在使用锚标记。单击按钮时,您将调用页面以转换到index.html和onClick事件。

<a 
    href="index.html"                       <-- go to index.html
    data-role="button" 
    data-icon="arrow-r" 
    data-iconpos="right" 
    data-theme="a" 
    onclick="doSomething(); return false">  <-- Click event
VERIFY
</a>

可能会尝试(可能需要删除/添加其他一些属性)

<input
    type="button"
    name="verify"
    id="verify"
    data-icon="arrow-r" 
    data-iconpos="right" 
    data-theme="a" 
    value="VERIFY" />

现在添加点击事件

$('#verify').click(function() {
    alert('Button has been clicked');
});

直播示例:http://jsfiddle.net/vRr82/2/

答案 2 :(得分:0)

我认为你应该在锚标记中追加data-ajax="false" .. 因为在jQuery mobile中,页面转换由AJAX完成,并用于页面转换 一定是假的..

答案 3 :(得分:-1)

使用Jquery live Function。这对我来说非常有用