4

我是 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>

这就是我需要这个开发网站的地方

请帮我。提前致谢...

4

2 回答 2

5

试试这种方式: -

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

演示

对于您更新的问题,您可以尝试这样的事情:

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

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

演示2

于 2013-06-02T03:36:31.287 回答
3

如果您正在处理大量 DOM 元素,那么懒惰地添加锚点会更便宜。

jQuery("a").bind("click", function(e) {
  e.preventDefault();
  document.location = jQuery(this).attr("href") + "#page1";
});
于 2013-06-02T03:37:35.097 回答