jQuery
行中的某个地方更改了它对不存在元素的处理。假设#nearby
元素不存在,则
console.log($('#nearby').html());
A)在jQuery <= 1.7.2
中,它打印出null
B)在jQuery > 1.7.2
中,它打印出undefined
我正在尝试支持两种情况的检查。以下作品:
if ($('#nearby').html() === null || $('#nearby').html() === undefined)
{
console.log('nothing here');
}
是否有一种不太丑陋的方法来检查null
或undefined
方法?我尝试了一次布尔检查:
(`if ($('#nearby').html()))` ...
但是没有用。那么,有没有更好的方法?
请注意,这不是对未定义/空变量的检查,对于SO来说,答案是一百万。
答案 0 :(得分:4)
如果要检查元素是否存在,为什么不使用:
If (!$('#nearby').length)
{
console.log("nothing here...")
}
console.log(!$('#nearby').length);
if (!$('#nearby').length)
console.log("#nearby do not exists!");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
另一方面,如果该元素存在,并且您想检查该元素是否有某种方法可用,则可以使用typeof
if ($('#nearby').length && typeof($('#nearby').html) !== "function")
console.log("html() is undefined!");
if ($('#nearby').length && !typeof($('#nearby').foo) !== "function")
console.log("foo() is undefined!");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="nearby"></div>
因此,总而言之,如果您要检查元素是否不存在或无法使用某种方法,则可以执行此操作。
if (!$('#nearby').length || typeof($('#nearby').foo) !== "function")
console.log("Nothing here...")
答案 1 :(得分:3)
if (!$('#nearby').html() || $('#nearby').html() == null ||
$('#nearby').html() == 'undefined') {
console.log('nothing here');
}
对我有用的
答案 2 :(得分:1)
您可以使用:
检查两种情况if (!!$('#nearby').html()) {
console.log('nothing here');
}
因为未定义或null均为假。