我有一个列表和一个链接,我想更改顶部链接:
<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
答案 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值。