jQuery: What does jQuery return when the jQuery object can't find a specified class selector?
假设我们有:
1 2
| var $letsTestA = $( '.lets-test-a' ),
$letsTestB = $( '.lets-test-b' ); |
虽然HTML是:
(我知道,我遗漏了.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对象的真值?
编辑:
不可否认,我确实看到了一些不同的答案说要检查长度,但我不明白这足以将其与我正在做的事情联系起来。
-
你没打印它,你提醒它。将其记录到控制台并从那里开始。
-
只需记录它并检查控制台
-
jQuery选择器总是返回一个jQuery对象 - 因此为什么没有错误,以及为什么jQuery容忍在不存在的元素上调用方法。有时jQuery对象包含一个或多个元素,有时如果没有找到则会为空。要检查这一点,请使用length属性。如果您还没有我强烈建议您阅读learn.jquery.com上的一些jQuery用户指南
-
对jQuery函数的两次调用都返回一个对象。 alert()确认了这一点。那个对象是什么,你没有检查。调试代码。如果您想知道这些变量中的内容,请在该点暂停执行并检查这些变量的运行时值。
-
我来自PHP,我认为PHP应该是一个混乱的,JS似乎只是做了一些非常不同的事情。感谢您的评论。我甚至不认为记录它会有所作为,但是当我记录它并打开它长度是其中一个属性。
-
那么,有了它,究竟又回归了什么?只是一个空对象?
-
不同!=凌乱。另外,这不是JavaScript问题,而是jQuery问题。
-
@DaveNewton肯定!但是能够看到这个东西是否存在肯定会很好lol,长度看起来更像是一个黑客,但我想这很干净。
-
@mattroberts33 JQuery函数通常返回自身 - 这个ID为什么你可以链接jQuery函数 - 它的优势之一。如果你返回null,一切都会爆炸。这是跨语言的内部DSL的常用技术。
您可以使用对象的.length属性来确定元素是否存在
1 2 3
| if ($letsTestA.length > 0) {
//element exists
} |
1 2 3 4 5
| var $letsTestA = $('.lets-test-a'),
$letsTestB = $('.lets-test-b');
console.log($letsTestA.length);
console.log($letsTestB.length); |
1
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> |
-
我必须等几分钟才能接受你的回答。 谢谢! 我来自PHP,我永远不会想到检查长度,看看它是否有任何东西。
-
现在我知道.length用于此,我正在做一些环顾四周,显然> 0没有必要,但我想它比写=== true更快?
-
@mattroberts33你会想要查找"JavaScript真实性"。