2009-11-11 2 views
0

У меня есть эти гиперссылки, которые будут прыгать на якорь тегов 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> 

Это, чтобы убедиться, что я прыгаю на право алфавитного письма в списке (который долго и будет иметь скроллер). Проблема в том, что она клонирована, когда документ готов (требование веб-сайта для разных целей - здесь не может измениться). Таким образом, после клонирования есть два набора якорных тегов, делающих то же самое. Я могу изменить идентификатор на клоне, но не внутренний. В результате я хочу, чтобы при нажатии на A или B или C, вместо этого произойдет скачок в новом клоне.

Как решить эту проблему? Если есть способ избежать использования этого тега привязки, это тоже хорошо. Я думаю, что у jQuery есть способ перейти к определенному селектору, не так ли? Дай мне знать.

Благодаря

ответ

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"); 
}); 
0

В одной и той же функции, в которой вы создаете клон также удалить имя атрибут из элементов LI оригинала.

0

Вы можете динамически изменять имя атрибута клонированных элементов:

$(function() { 
    names = ['A', 'B', 'C']; 

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

Затем вы можете перейти к «# A2», например.