2012-02-25 27 views
20

Jquery Mobile已决定将锚链接视为页面请求。然而,如果你有一些博客文章有链接到同一页面的链接(例如href =“#specs”),那么这不太好。如何让Anchor Links在Jquery Mobile中工作?

有没有办法在特定的页面上禁用jquery mobile的锚链接使用,我知道我不会使用它,所以我可以使用锚链接,因为它们的意图是,下拉到页面的一部分?

我只需要一个锚链接解决方案在同一页(即:href =“#specs”)。

感谢

回答

42

你可以尝试在锚标记添加data-ajax="false"

链接没有Ajax

链接指向其他结构域或具有相对=“外部”, 数据AJAX =“假”或目标属性将不会被加载使用Ajax。 相反,这些链接将导致整个页面刷新,而没有动画 转换。这两个属性(rel =“external”和data-ajax =“false”) 具有相同的效果,但语义不同:rel =“external” 应该在链接到另一个站点或域时使用,而 data- ajax =“false”对于简单地选择通过Ajax加载您的 域中的页面非常有用。由于安全限制,框架始终选择从Ajax 行为中选择到外部域的链接。

参考 - http://jquerymobile.com/demos/1.0.1/docs/pages/page-links.html

+1

谢谢!!!!!! – capdragon 2012-11-08 19:42:36

+0

我想你的意思是把它放在链接标签(而不是锚标签)? – 2013-03-30 04:06:06

+0

当在同一个jQuery移动应用程序中链接到外部页面(而不是链接)时,这也很有用,我的意思是,你有一个链接从'index.html'指向'create.html#creations'。它有时用作JQM命令,但有时它不会,所以'data-ajax =“false”属性是一个很好的解决方案。 – Francisco 2013-07-04 04:05:22

2

您可以将下面的代码添加到您的网页的结尾:

<script type="text/javascript"> 
    $('a.native-anchor').bind('click', function(ev) { 
     var target = $($(this).attr('href')).get(0).offsetTop; 
     $.mobile.silentScroll(target); 
     return false; 
    }); 
</script> 

和类“天然锚”添加到您的锚链接。

这不是一个完全的溶剂,因为浏览器的后退按钮会将您移动到上一页而不是链接的位置,但它比根本不工作的链接更好。

我在这里发现了这个sollution:jQuery Mobile Anchor Linking

+0

如果页面是从另一个页面(通常是JQuery移动平台中的情况)加载ajax,则确保将代码添加到data-role =“page”元素的末尾。 – 2012-03-09 09:08:07

0
$(document).bind("mobileinit", function() { 
    $.mobile.ajaxEnabled = false; 
}); 
4

如果你像我一样,将现有的网站,你不想去通过每个页面现在。您可以将一行代码添加到您的标题中,并且您的所有标题和所有现有的内部定位链接都将添加data-ajax =“false”标记。

当然,这里假定你已经在头文件中包含了你自己的javascript文件。如果你不是,你将不得不触摸每一页。但是我有一个是包含在每个页面已经这么一个JavaScript文件,我加入这一行...

$("a").each(function() { if(this.href.indexOf("#")>=0) $(this).attr("data-ajax",false); }); 

这正好你的$(document)中。就绪()块。如果你还没有那个块,这里是整个块。

$(document).ready(function() { 
    $("a").each(function() { if(this.href.indexOf("#")>=0) $(this).attr("data-ajax",false); }); 
}); 

希望这会有所帮助。这是user700284提供的同样的解决方案,但以自动方式。

-1

谢谢 这个解决方案为我

<script> 
    $(document).ready(function() { 
    $("a").each(function() { 
     if (this.href.indexOf("index.php") >= 0) $(this).attr("data-ajax", false); 
    }); 
    }); 
</script> 

我换成#index.php这是我的文档根目录。 但是,它并不适用于表单按钮即工作input type="submit"

0

首先,你必须这段代码放到一个custom.js文件

$(document).bind('mobileinit', function() { 
    $.mobile.loader.prototype.options.disabled = true; 
    $.mobile.ajaxEnabled = false; 
    $.mobile.linkBindingEnabled = false; 
    $.mobile.loadingMessage = false; 
}); 

然后添加这个文件到您的网页之前,jQuery Mobile的JS是加载。因为'mobilinit'事件立即触发