簡體   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