jquery .parents()

时间:2010-11-10 22:54:43

标签: jquery

我有一个列表和一个链接,我想更改顶部链接:

<a class="topLink" href="#">change me</a>

<ul>
    <li><a href="#">link name</a></li>
    <li><a href="#">link name</a></li>
    <li><a href="#">link name</a></li>
    <li><a href="#">link name</a></li>
    <li><a href="#">link name</a></li>
</ul>   

当我点击“链接名称”链接时,我希望该文字应用于更改我链接。

如何使用jQuery父项执行此操作?或者我应该使用什么?

编辑:对不起,我忘了说我会有三个这样的列表,所以三个链接都有一类topLink

6 个答案:

答案 0 :(得分:3)

$('ul').delegate('a', 'click', function() {
    $('.topLink').text($(this).text());
});

这里不需要调用.parents()(它也不会真正起作用)

通过使用.delegate(),您可以通过仅将一个事件处理程序绑定到父ul元素来完成工作。当然,如果ul有id,那会好得多。

参考:.delegate()
示例:Here

答案 1 :(得分:1)

$('ul li a').click(function () {
    $(".topLink").html($(this).html());
});

答案 2 :(得分:1)

它已经有了一个类,我不会使用父母,因为你必须得到父母的兄弟(也许jquery应该有一个叔叔的引用??? jk)。

使用该类将是:

$('li a').click( function() {
    $('.topLink').text( $(this).text());
}

答案 3 :(得分:1)

如果<ul><a>是相邻的兄弟姐妹,那么请尝试:

$('ul').delegate('a','click',function() {
    $(this).closest('ul').prev().text( $(this).text() );
});

这使用jQuery's closest() method获取第一个<ul>祖先,jQuery's .prev() method<ul>遍历到之前的兄弟。

如果HTML标记与您提供的标记有任何不同,那么您需要提供实际HTML的示例。

答案 4 :(得分:0)

我更喜欢使用.closest()

答案 5 :(得分:0)

您尝试更改的anchor标记不在LI的层次结构中,因此parents()方法无法获取它。你最好的选择是通过id或class选择它并以这种方式改变html值。