我總是想知道爲什麼如果我試圖通過id結構中不存在的id選擇器來查找元素,jQuery將返回true。
像這樣:
<div id="one">one</div>
<script>
console.log(!!$('#one')) // prints true
console.log(!!$('#two')) // is also true! (empty jQuery object)
console.log(!!document.getElementById('two')) // prints false
</script>
我知道我可以使用!!$('#two').length
因爲長度=== 0,如果對象是空的,但它似乎是合乎邏輯,我認爲,如果發現了一個選擇將返回該元素,否則null
(就像原生document.getElementById
一樣)。
F.ex,這個邏輯不能在jQuery的完成:
var div = $('#two') || $('<div id="two"></div>');
難道不更符合邏輯,如果如果沒有找到ID選擇返回null?
有人嗎?
我也在想這是其中一個原因。但以這種方式抑制錯誤真的是一個好主意嗎?如果沒有找到id,我確定想知道拋出錯誤的位置而不是調試每個鏈。 – David 2010-01-16 15:41:41
如果您使用id選擇器,這可能是您想要的行爲,因爲id(通常)是唯一的。但是如果您使用類選擇器來關閉頁面上的所有對話框/彈出窗口,該怎麼辦?您不希望函數僅僅因爲用戶當前沒有打開任何對話框而拋出錯誤。你會希望它默默無聞。 – Dan 2010-01-17 12:59:48
JavaScript沒有任何稱爲NullReference異常的東西。也許你的意思是'ReferenceError'? – 2010-01-17 14:15:52