使用jquery向链接添加锚点

时间:2013-06-02 03:34:59

标签: javascript jquery anchor

我是javascript的新手。 需要删除任何现有的锚点(例如:#page33)使用javascript或jquery动态地(客户端)向列表中的所有链接添加其他锚点(例如:#page1):

初始html(来自服务器):

<ul id="lang_menu">
    <li><a href="home.php?lang=eng#page33">English</a></li>
    <li><a href="home.php?lang=tam#page33">Tamil</a></li>
    <li><a href="home.php?lang=sin#page33">Sinhala</a></li>
</ul>

这应该表现得像(在客户端使用#page1替换#page33):

<ul id="lang_menu">
    <li><a href="home.php?lang=eng#page1">English</a></li>
    <li><a href="home.php?lang=tam#page1">Tamil</a></li>
    <li><a href="home.php?lang=sin#page1">Sinhala</a></li>
</ul>

这是我需要Developing Website

的地方

请帮帮我。提前谢谢......

2 个答案:

答案 0 :(得分:5)

尝试这种方式: -

$(function () {
    $('#lang_menu li a').attr('href', function (_, oldHref) {
        return oldHref + "#page1";
    });
});

Demo

对于您的更新问题,您可以尝试以下方式:

使用正则表达式替换网址中的#part。

$(function () {
    $('#lang_menu li a').attr('href', function (_, oldHref) {
        oldHref =  oldHref.replace(/\#(.*)/g, "#page1");
         if(oldHref.indexOf('#') == -1)
            oldHref += "#page1";
        return oldHref;
    });
});

Demo2

答案 1 :(得分:3)

如果你正在处理很多DOM元素,那么懒得添加锚点会更便宜。

jQuery("a").bind("click", function(e) {
  e.preventDefault();
  document.location = jQuery(this).attr("href") + "#page1";
});