【问题标题】:Jump to anchor tag after clone克隆后跳转到锚标签
【发布时间】:2009-11-13 10:26:34
【问题描述】:

我有这些超链接,它们会跳转到 UL 中的某个位置的锚标记

<a href="#A">A</a>
<a href="#B">A</a>
<a href="#C">A</a>

<ul>
<li><a name="A"></a></li>
<li><a name="B"></a></li>
<li><a name="C"></a></li>
</ul>

这是为了确保我跳到列表中正确的字母(很长并且会有滚动条)。我遇到的问题是,这是在文档准备好时克隆的(网站出于不同目的的要求 - 不能在此处更改)。所以在克隆之后有两组锚标签做同样的事情。我可以更改克隆上的 ID,但不能更改内部的 ID。我想要的结果是,当点击 A 或 B 或 C 时,它将在新的克隆中跳转

如何解决这个问题?如果有办法避免使用这些锚标签,那也很好。我认为 jQuery 有办法跳转到特定的选择器,对吧?告诉我。

谢谢

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    jQuery ScrollTo 插件可以解决您的问题。

    jQuery.ScrollTo

    相关:JQuery focus

    或者你可以添加这个脚本:

    clone.find("a[href^=#]").each(function() {
        var anchor = $(this);
        var name = anchor.attr("href");
        anchor.attr("href", name + "_1");
        clone.find("a[name=" + name.substring(1) + "]").attr("name", name.substring(1) + "_1");
    });
    

    【讨论】:

      【解决方案2】:

      在创建克隆的同一函数中,还从原始的 LI 元素中删除 name 属性。

      【讨论】:

        【解决方案3】:

        您可以动态更改克隆元素的名称属性:

        $(function() {
            names = ['A', 'B', 'C'];
        
            $.each(names, function(i, name) {
                $("[name='" + name + "']")[1].name = name + "2";
            });
        });
        

        然后可以跳转到“#A2”为例。

        【讨论】:

          猜你喜欢
          • 2013-12-06
          • 1970-01-01
          • 2012-05-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多