JQuery移动处理链接(返回false)

时间:2013-07-01 22:53:28

标签: jquery-mobile anchor hyperlink

我打算使用JQM制作一个简单的移动网络应用程序,而我在使用这个简单的功能时遇到了问题:当我点击某些链接(并非所有链接)时,我希望能够首先处理一些数据,然后根据结果,有时继续链接动作(我喜欢整个转换和ajax的事情),有时候不会。

重要的是我想保留正常的JQMobile过渡和链接的东西,有时候会阻止它们(例如用于验证和类似的事情)。

我尝试过:return false,preventDefault(和stopPropagation结合使用)和data-ajax =“false”,没有hav工作,它们都重定向。

有人能告诉我JQMobile中的正确方法吗?以防万一重要:我使用锚点链接,使用this进行测试。

先谢谢你,珍妮弗。

决议:在下面添加了答案。

2 个答案:

答案 0 :(得分:2)

您可以尝试在要阻止默认行为的链接上设置click事件。

在下面的示例中,我们将一个类special_link添加到我们想要在重定向到另一个页面之前做一些特殊操作的链接。

当我们点击“特殊”链接时,我们会在决定将用户重定向到另一个页面之前检查是否遵循了给定条件。

重定向(包含所有转换内容)到另一个页面(在我们的示例中为page_2),是手动完成的,使用以下代码:

$.mobile.changePage( "#page_2", {
  transition: "slide",
});

有关方法$.mobile.changePage的更多信息,您可以查看在线文档:

http://api.jquerymobile.com/jQuery.mobile.changePage/

在下面的示例中,如果在文本输入中键入1,则不会重定向。否则,您将更改页面。


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>

<script>
    $(function() {

        // Setting the click event for our special link
        $(".special_link").click(function() {

            // IF SOME CONDITION THEN... (Here, if we typed a 1 in the text input)
            if($('#my_value').val()=='1') {

                // We do not change page
                alert("We stay where we are");

            } else { 

                // We change page. In this example: page 2
                $.mobile.changePage( "#page_2", {
                transition: "slide",      // You can define the transition 
                                          // you want + other parameters

                });
            }
        });
    });
</script>

</head>
<body>
    <!-- PAGE 1 -->
    <div data-role="page" id="page_1">
        <div data-role="content">
            <h1>Page 1</h1>

                <input type="text" id="my_value"/>

                <!-- A SPECIAL LINK -->
                <a href="" class="special_link">Special link</a>

        </div>
    </div>

    <!-- PAGE 2 -->
    <div data-role="page" id="page_2">
        <div data-role="content">
            <h1>Page 2</h1>
            <a href="#page_1">Go back to page 1</a>
        </div>
    </div>
</body>
</html>

我希望这会有所帮助。如果您有任何问题,请告诉我。

答案 1 :(得分:0)

好的,所以我想出了一个相当不错的方法来做到这一点,没有它感觉像一个kludge。我只是避免使用标签,而是使用按钮,这样我通常会拦截它们,如果我想转换,我使用changePage JQM方法。奇迹般有效。感谢Littm提示,我希望将来对其他人有用。