[英]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.