簡體   English   中英

jQuery - 是否有比“parent()。parent()。parent()”更好的語法

[英]jQuery - is there better syntax than “parent().parent().parent()”

我正在做一些相當基本的jQuery的東西,真正開始,我經常通過做像這樣的事情來導航dom

$(this).parent().parent().addClass('hello');

我只是想知道是否有更好的方法來做到這一點?

您可以使用parents ,它依次返回所有祖先元素。 如果要在特定級別停止遍歷,請使用eq過濾生成的集合。 例如,要獲得祖父母:

// 0 = parent, 1 = parent of parent, etc.
$(this).parents().eq(1).addClass('hello');

如果你想向上穿過樹並停在特定的水平,但是在特定的選擇器匹配時,請使用closest ,例如:

$(this).closest("table").addClass('hello');

您可以使用closest()方法,該方法返回與祖先鏈中給定選擇器匹配的第一個元素。

$(this).closest(SELECTOR_OF_THE_PARENT).addClass('hello')

假設您有以下HTML:

<div>
    <span>
        <strong>Hi there</strong>
    </span>
</div>

你可以使用.parents()來獲取div元素:

$("strong").parents("div").addClass("hello");

只需更換"strong"this ,你可以使用一個選擇器來查找特定的父元素。

聽起來像你的.parents().closest() - 后者是最有效的,因為它一旦匹配最近的選擇器就停止進展DOM。

“我只是想知道是否有更好的方法來做到這一點?”

熟悉jQuery的選擇和遍歷方法絕對是一個好主意。

但是,如果將來你發現自己被遍歷所淹沒並發現:

  1. 您的“數據模型”實際上包含在您的DOM中
  2. 維持和改變這種性質的應用是非常痛苦的

......可能是時候考慮一​​種正式的模型 - 視圖 方法了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM