繁体   English   中英

jquery .parents()

[英]jquery .parents()

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

<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

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

不需要在这里调用.parents() (它也不会真的有效)

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

参考: .delegate()
示例: 这里

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

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

使用该类将是:

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

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

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

这使用jQuery的 .prev() closest()方法来获取第一个<ul>祖先,并使用jQuery的.prev()方法<ul>遍历到它之前的兄弟。

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

我更喜欢使用.closest()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM