我正在使用 jQuery,我想检查页面中是否存在一个元素。我已经写了以下代码,但它不工作:
if($("#btext" + i) != null) { //alert($("#btext" + i).text()); $("#btext" + i).text("Branch " + i); }
如何检查元素的存在?
Lookup 函数返回匹配元素的数组。你可以检查长度是否为零。注意这个更改,它只查找元素一次,并根据需要重用结果。
var elem = $("#btext" + i); if (elem.length != 0) { elem.text("Branch " + i); }
另外,您是否尝试过仅使用 text 函数——如果不存在元素,它将什么也不做。
$("#btext" + i).text("Branch " + i);
检查 JQuery 常见问题解答..。
您可以使用选择器返回的 jQuery 集合的 length 属性:
if ( $('#myDiv').length ){}
Jquery $()函数总是返回与您的选择器 cretaria 匹配的非空值均值元素。如果没有找到元素,它将返回一个空数组。 所以你的代码看起来像这样-
if ($("#btext" + i).length){ //alert($("#btext" + i).text()); $("#btext" + i).text("Branch " + i); }
if ( $('#whatever')[0] ) {...}
所有原生 jQuery 方法返回的 jQuery 对象不是一个数组,而是一个具有许多属性的对象; 其中一个属性是“ length”属性。您还可以检查 size ()或 get (0)或 get ()-‘ get (0)’的工作原理与访问第一个元素(即 $(elem)[0])相同
if (typeof($("#btext" + i)) == 'object'){ $("#btext" + i).text("Branch " + i); }
无论你选择什么,函数 $()总是返回一个 jQuery 对象,这样就不能用来测试。最好的方法(如果不是唯一的方法)是使用 size()函数或本机长度属性,如上所述。
$()
size()
if ( $('selector').size() ) {...}
在未定义或空对象上调用 length 属性将导致 IE 和 webkit 浏览器失败!
试试这个:
if($("#something") !== null){ // do something }
或者
if($("#something") === null){ // don't do something }
(因为我似乎没有足够的名声来投票否决这个答案... ...)
沃尔夫写道:
调用未定义的长度属性 或空对象将导致 IE 和 Webkit 浏览器失败! 试试这个: // NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something } 或者 // NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
调用未定义的长度属性 或空对象将导致 IE 和 Webkit 浏览器失败!
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
虽然对未定义或 null 对象调用 length 属性确实会导致浏览器失败,但 jQuery 的选择器($(’...’))的结果将 永远不会为 null 或未定义。因此,代码建议毫无意义。用其他的答案,会更有意义。
(2012年更新)因为人们在看代码的时候,这个问题的答案排名很靠前: 在过去的几年里,我一直在使用这个小插件:
jQuery.fn['any'] = function() { return (this.length > 0); };
我认为 $(‘ div’) any ()比 $(‘ div’)长度读起来更好,而且你不会因为输入错误而受到太多的影响: $(‘ div’) . ayn ()会给出一个运行时错误,$(‘ div’)长度很可能总是假的。
好吧 2012年11月编辑:
1)因为人们倾向于看代码而不是阅读围绕代码所说的内容,我在 Wolf 的引用代码中加入了两个大的警告说明。 2)我为这种情况添加了我使用的小插件的代码。
像这样使用 $("#selector").get(0)检查 null。Get 返回 dom 元素,然后处理一个数组,其中需要检查 length 属性。我个人不喜欢空处理的长度检查,它让我感到困惑:)
$("#selector").get(0)
在 jQuery 1.4中,得到 $。IsEmptyObject 函数,但是如果你被迫使用老版本的 jQ,就像我们这些可怜的 Drupal 开发人员一样,那么就使用下面的代码:
// This is a function similar to the jQuery 1.4 $.isEmptyObject. function isObjectEmpty(obj) { for ( var name in obj ) { return false; } return true; }
像这样使用:
console.log(isObjectEmpty(the_object)); // Returns true or false.
可以使用 length 属性执行此操作。
jQuery.fn.exists = function(){return ($(this).length < 0);} if ($(selector).exists()) { //do somthing }
当对象为空时返回这个错误:
Uncaught TypeError: Cannot read property '0' of null
我试试这个代码:
try{ if ($("#btext" + i).length) {}; }catch(err){ if ($("#btext" + i).length) { //working this code if the item, not NULL } }
用“未定义”怎么样?
if (value != undefined){ // do stuff }