簡體   English   中英

$($(this))是什么意思?

[英]What does $($(this)) mean?

我在Web上看到了一些使用以下語句的代碼

if ($($(this)).hasClass("footer_default")) {
      $('#abc')
        .appendTo($(this))
        .toolbar({position: "fixed"});
    }

$($(this))有什么用?為什么這里有必要?

是的, $($(this))$(this)相同, jQuery()$()函數非常冪等 沒有理由對特定結構(雙包裝this ),不過,我作為快捷方式使用僅由一組,其中涉及類似的雙包裝抓住了第一個元素的東西,是

$($('selector')[0])

相當於,抓取匹配selector每個元素(返回一個jQuery對象),然后使用[0]抓取列表中的第一個(返回一個DOM對象),然后再次將它包裝在$()以轉向它回到一個jQuery對象,這次只包含一個元素而不是一個集合。 它大致相當於

document.querySelectorAll('selector')[0]; ,這幾乎是document.querySelector('selector');

你可以根據需要多次包裝$ ,它不會改變任何東西。

如果foo是DOM元素, $(foo)將返回相應的jQuery對象。

如果foo是一個jQuery對象, $(foo)將返回相同的對象。

這就是為什么$($(this))將返回與$(this)完全相同的原因。

沒有特別需要雙層包裝, $($(this))$(this)完全相同。

也就是說,我曾經在我的項目中的一個文件中找到了這個雙包裝,由另一個開發人員提交。 通過修訂跟蹤更改,結果發現它以$($(this).find('selector').first()) - 也就是說,某個選擇器的結果被包裝以創建一個新對象。 那么不管是什么原因,除去選擇和唯一的雙包裝this仍然存在。 毋庸置疑,在下次提交時它被改為$(this)

如前所述, $($(this))$(this)完全相同。 如果您嘗試多次包裝它,jQuery將返回相同的jQuery對象。

此外,出於性能考慮,重用jQuery對象是一個好習慣 - 創建jQuery對象非常昂貴,尤其是具有復雜選擇器的對象。 例:

var $this = $(this);
if ($this.hasClass("footer_default")) {
    $('#abc')
        .appendTo($this)
        .toolbar({position: "fixed"});
}

只需google獲取'jQuery最佳實踐' - 您需要30分鍾才能學習這些基礎知識,並且您將更有效地使用jQuery方法。

沒有這樣做的重要性。

以下代碼返回相同的內容:

console.log($($(this)).hasClass("footer_default"))
console.log($(this).hasClass("footer_default"))

如果所選元素是否具有類footer_default ,則取決於布爾值:

.hasClass(className)返回:Boolean

演示: http//jsfiddle.net/IrvinDominin/aSzFn/

$(this)$($(this))都返回jquery對象。

這兩者沒有區別。

暫無
暫無

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

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