jQuery:当 jQuery 对象找不到指定的类选择器时,jQuery 会返回啥? [复制]
Posted
技术标签:
【中文标题】jQuery:当 jQuery 对象找不到指定的类选择器时,jQuery 会返回啥? [复制]【英文标题】:jQuery: What does jQuery return when the jQuery object can't find a specified class selector? [duplicate]jQuery:当 jQuery 对象找不到指定的类选择器时,jQuery 会返回什么? [复制] 【发布时间】:2017-07-02 19:57:33 【问题描述】:假设我们有:
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 对象的真实值?
编辑: 诚然,我确实看到一些不同的答案说要检查长度,但我理解的不够充分,无法将其与我正在做的事情联系起来。
【问题讨论】:
您不是在打印它,而是在提醒它。将其记录到控制台并从那里开始。 只需记录并检查控制台 A jQuery 选择器 always 返回一个 jQuery 对象 - 因此没有错误,以及 jQuery 允许在不存在的元素上调用方法的原因。有时该 jQuery 对象包含一个或多个元素,有时如果没有找到,它将为空。要检查这一点,请使用length
属性。如果你还没有,我强烈建议你阅读一些 jQuery 用户指南learn.jquery.com
对 jQuery 函数的两个调用都返回一个对象。 alert()
正在确认这一点。什么是in那个对象,你没有检查。调试代码。如果您想知道这些变量中的内容,请暂停执行并检查这些变量的运行时值。
我来自 PHP,我认为 PHP 应该是乱七八糟的,JS 似乎在做一些非常不同的事情。我很欣赏你的cmets。我什至不认为记录它会有所作为,但是当我记录它并打开它时,长度是属性之一。
【参考方案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>
【讨论】:
我需要等待几分钟才能接受您的回答。谢谢!我来自 PHP,我永远不会考虑检查长度以查看其中是否有任何内容。 现在我知道.length
是用来做这个的,所以我环顾四周,显然> 0
不是必需的,但我想它比写=== true
更快?跨度>
@mattroberts33 您需要查找“javascript 真实性”。以上是关于jQuery:当 jQuery 对象找不到指定的类选择器时,jQuery 会返回啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
向 Django REST Framework 发送 jQuery 请求导致找不到 JSON 对象错误
rails active admin 部署:找不到文件'jquery-ui'
Typescript 和 JQuery 编译错误:找不到名称“$”