我想確定一個jQuery選擇器(通過遍歷DOM)的結果是否確實找到了DOM元素,但我遇到了一些問題。我認爲通過檢查變量是否等於undefined
或null
可以在這種情況下工作,但它不適合我。我覺得我缺少一些基本的東西。任何幫助表示讚賞。如何測試jQuery Traverse/Selector丟失DOM元素 - 未定義?
這是我的例子。
HTML
<ul>
<li>
</li>
</ul>
<div id="results"></div>
的Javascript/jQuery的
var
$element = $("ul li"),
$parent = $element.parent().closest("li"),//this is the selector that is giving me the issue
$r = $("#results")//just used to append the results of the if statement below
;
$r.append("<br />$parent = " + $parent);
$r.append("<br />typeof $parent = " + typeof $parent);
$r.append("<br />$parent.length = " + $parent.length);
$r.append("<br />$parent[0] = " + $parent[0] + "<br />");//for Chrome
if ($parent === "null") { $r.append("<br />$parent === 'null'") }//not expected to work, just testing
if ($parent === null) { $r.append("<br />$parent === null") }//not expected to work, just testing
if ($parent == null) { $r.append("<br />$parent == null") }//not expected to work, just testing
if ($parent === "undefined") { $r.append("<br />$parent === 'undefined'") }
if ($parent === undefined) { $r.append("<br />$parent === undefined") }
if ($parent == undefined) { $r.append("<br />$parent == undefined") }
if ($parent[0] === "undefined") { $r.append("<br />$parent[0] === 'undefined'") }
if ($parent[0] === undefined) { $r.append("<br />$parent[0] === undefined") }
if ($parent[0] == undefined) { $r.append("<br />$parent[0] == undefined") }
if (typeof $parent === "undefined") { $r.append("<br />typeof $parent === 'undefined'") }
if (typeof $parent === undefined) { $r.append("<br />typeof $parent === undefined") }
if (typeof $parent == undefined) { $r.append("<br />typeof $parent == undefined") }
if (typeof $parent[0] === "undefined") { $r.append("<br />typeof $parent[0] === 'undefined'") }
if (typeof $parent[0] === undefined) { $r.append("<br />typeof $parent[0] === undefined") }
if (typeof $parent[0] == undefined) { $r.append("<br />typeof $parent[0] == undefined") }
if ($parent.length == 0) { $r.append("<br />$parent.length == 0") }
這些返回true
; $parent[0] === undefined
和$parent[0] == undefined
和typeof $parent[0] === 'undefined'
;
這是有道理的,因爲jQuery選擇器沒有找到任何DOM對象,並且沒有元素[0]
。我只試過這個,因爲使用console.log
,Chrome中的對象需要這個。但我不認爲這是正確的。
$parent.length == 0
按預期工作。但這是需要一個!== undefined' and
!== null`?
在此先感謝!
*「'$ parent。長度== 0'按預期工作。但是這是否需要用'!== undefined'和'!== null'?「* Huh?......不會。正如你所說的那樣,它可以工作,這是你的答案 –
'$ parent.length == 0' – pktangyue
@thesystem,由於'$ parent'沒有在DOM中找到元素,所以我期望'$ parent.length'等於0。對嗎?我試圖確定的是如果'$ parent'是'未定義',那麼我應該首先檢查'$ parent'是否爲空並且不是undefined? – JoeFletch