2017-02-14 39 views
1

比方說,我們有:jQuery:當jQuery對象無法找到指定的類選擇器時,jQuery會返回什麼?

var $letsTestA = $('.lets-test-a'), 
    $letsTestB = $('.lets-test-b'); 

雖然HTML是:

<div class="lets-test-a"></div> 

(我知道,我離開了.lets-test-b

現在,如果我們試圖調用變量會發生什麼$letsTestB

我做了一些測試,我不只是一味地問一個問題不首先做一些研究,但我有多麼這看似有點困惑...

如果我alert($letsTestA);alert($letsTestB);從JSFiddle測試時,我得到的結果只是[object Object]

這裏是我的測試小提琴:https://jsfiddle.net/m6j03423/

而且這,就是我其實想在這裏做的是創建一個辦法,找出一個變量的內容是否存在。

在PHP中,我只會寫if (empty($myVar)) { // do action },但JS不會以相同的方式工作。

在JS中,我認爲我可以寫if ($letsTestA) { },它應該能夠打印變量的結果?但是,我仍然得到[object Object]

我錯過了什麼?

我還可以打印jQuery對象的內容嗎?

如何測試變量是否包含jQuery對象的真實值?


編輯: 不可否認,我確實看到了幾個不同的答案說,檢查的長度,但我不明白足以連接到我在做什麼。

+3

你沒有打印出來,你報警吧。將其記錄到控制檯並從那裏開始。 –

+0

只記錄它並檢查控制檯 – sTx

+1

jQuery選擇器* always *返回一個jQuery對象 - 因此爲什麼沒有錯誤,以及爲什麼jQuery容忍在不存在的元素上調用方法。有時候,jQuery對象包含一個或多個元素,其他時候如果沒有找到,它將是空的。要檢查這個使用'length'屬性。如果你還沒有,我強烈建議你閱讀http://learn.jquery.com/ –

回答

1

您可以使用對象的.length屬性來確定元素是否存在

if ($letsTestA.length > 0) { 
    //element exists 
} 

var $letsTestA = $('.lets-test-a'), 
 
    $letsTestB = $('.lets-test-b'); 
 

 
console.log($letsTestA.length); 
 
console.log($letsTestB.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="lets-test-a"></div>

+1

我必須等待幾分鐘才能接受您的答案。謝謝!我來自PHP,我永遠不會考慮檢查長度,看看裏面是否有任何東西。 – mattroberts33

+0

現在我知道'.length'是用於這個,我正在做一些四處看看,顯然'> 0'沒有必要,但我想這比寫'=== true'更快? – mattroberts33

+1

@ mattroberts33你會想看看「JavaScript的真實性」。 –

相關問題