如何在 jQuery 中检查 null 对象

发布于 2024-07-11 19:25:12 字数 243 浏览 7 评论 0原文

我正在使用 jQuery,我想检查页面中是否存在某个元素。 我编写了以下代码,但它不起作用:

if($("#btext" + i) != null) {
    //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

How do I check the element of the element?

I'm using jQuery and I want to check the existence of an element in my page. I have written following code, but it's not working:

if($("#btext" + i) != null) {
    //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

How do I check the existence of the element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(13

江南烟雨〆相思醉 2024-07-18 19:25:12

检查 jQuery 常见问题解答...

您可以使用选择器返回的 jQuery 集合的 length 属性:

if ( $('#myDiv').length ){}

Check the jQuery FAQ...

You can use the length property of the jQuery collection returned by your selector:

if ( $('#myDiv').length ){}
无可置疑 2024-07-18 19:25:12

(因为我似乎没有足够的声誉来否决答案......)

Wolf 写道:

在未定义时调用 length 属性
或者 null 对象将导致 IE 和
webkit 浏览器失败!

试试这个:

 // 注意!   以下是错误的;   不使用!   ——埃莱奥特尔·克拉姆 
  if($("#something") !== null){ 
    // 做一点事 
  } 
  

 // 注意!   以下是错误的;   不使用!   ——埃莱奥特尔·克拉姆 
  if($("#something") === null){ 
    // 不做某事 
  } 
  

虽然在未定义或 null 对象上调用 length 属性确实会导致浏览器失败,但 jQuery 选择器($('...'))的结果将永远 为空或未定义。 因此,代码建议没有任何意义。 使用其他答案之一,它们更有意义。


(2012 年更新)因为人们查看代码,这个答案在列表中非常靠前:在过去的几年里,我一直在使用这个小插件:

  jQuery.fn['any'] = function() {
     return (this.length > 0);
  };

我认为 $('div').any()< /strong> 比 $('div').length 读起来更好,而且您不会因为拼写错误而受到太大影响:$('div').ayn()会给出运行时错误, $('div').lenght 很可能总是为假。

__
2012 年 11 月编辑:

1) 因为人们倾向于查看代码而不是阅读代码周围的内容,所以我在 Wolf 引用的代码中添加了两个重要的警告注释。
2)我添加了用于这种情况的小插件的代码。

(Since I don't seem to have enough reputation to vote down the answer...)

Wolf wrote:

Calling length property on undefined
or a null object will cause IE and
webkit browsers to fail!

Instead try this:

 // NOTE!! THE FOLLOWING IS WRONG; DO NOT USE!  -- EleotleCram
if($("#something") !== null){
  // do something
}

or

 // NOTE!! THE FOLLOWING IS WRONG; DO NOT USE!  -- EleotleCram
if($("#something") === null){
  // don't do something
}

While it is true that calling the length property on an undefined or null object will cause browsers to fail, the result of jQuery's selectors (the $('...')) will never be null or undefined. Thus the code suggestions make no sense. Use one of the other answers, they make more sense.


(Update 2012) Because people look at code and this answer is pretty high up the list: For the last couple of years, I have been using this small plugin:

  jQuery.fn['any'] = function() {
     return (this.length > 0);
  };

I think $('div').any() reads better than $('div').length, plus you won't suffer as much from typos: $('div').ayn() will give a runtime error, $('div').lenght will silently most likely always be falsy.

__
Edits november 2012:

1) Because people tend to look at code and not read what is said around the code, I added two big caveat lector notes to the quoted code of Wolf.
2) I added code of the small plugin I use for this situation.

嘴硬脾气大 2024-07-18 19:25:12

查找函数返回匹配元素的数组。 您可以检查长度是否为零。 请注意仅查找元素一次并根据需要重用结果的更改。

var elem = $("#btext" + i);
if (elem.length != 0) {
   elem.text("Branch " + i);
}

另外,您是否尝试过仅使用文本函数——如果不存在元素,它将什么也不做。

$("#btext" + i).text("Branch " + i);

The lookup function returns an array of matching elements. You could check if the length is zero. Note the change to only look up the elements once and reuse the results as needed.

var elem = $("#btext" + i);
if (elem.length != 0) {
   elem.text("Branch " + i);
}

Also, have you tried just using the text function -- if no element exists, it will do nothing.

$("#btext" + i).text("Branch " + i);
临走之时 2024-07-18 19:25:12

jquery $() 函数总是返回非空值 - 意味着与您选择器 cretaria 匹配的元素。 如果未找到该元素,它将返回一个空数组。
所以你的代码看起来像这样 -

if ($("#btext" + i).length){
        //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}

jquery $() function always return non null value - mean elements matched you selector cretaria. If the element was not found it will return an empty array.
So your code will look something like this -

if ($("#btext" + i).length){
        //alert($("#btext" + i).text());
    $("#btext" + i).text("Branch " + i);
}
一桥轻雨一伞开 2024-07-18 19:25:12

在 jQuery 1.4 中,您可以使用 $.isEmptyObject 函数,但是如果您像我们这些可怜的 Drupal 开发人员一样被迫使用旧版本的 jQ,只需窃取以下代码即可: 使用

// 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.

In jQuery 1.4 you get the $.isEmptyObject function, but if you are forced to use an older version of jQ like us poor Drupal developers just steal use this code:

// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
  for ( var name in obj ) {
    return false;
  }
  return true;
}

Use it like:

console.log(isObjectEmpty(the_object)); // Returns true or false.
仲春光 2024-07-18 19:25:12

使用“未定义”怎么样?

if (value != undefined){ // do stuff } 

What about using "undefined"?

if (value != undefined){ // do stuff } 
如痴如狂 2024-07-18 19:25:12

无论您选择什么,函数 $() 总是返回一个 jQuery 对象,因此无法用于测试。 最好的方法(如果不是唯一的方法)是使用 size() 函数或本机长度属性,如上所述。

if ( $('selector').size() ) {...}                   

no matter what you selection is the function $() always returns a jQuery object so that cant be used to test. The best way yet (if not the only) is to use the size() function or the native length property as explained above.

if ( $('selector').size() ) {...}                   
记忆里有你的影子 2024-07-18 19:25:12
if ( $('#whatever')[0] ) {...}

所有原生 jQuery 方法返回的 jQuery 对象不是一个数组,而是一个具有许多属性的对象; 其中之一是“长度”属性。 您还可以检查 size() 或 get(0) 或 get() - 'get(0)' 的工作方式与访问第一个元素相同,即 $(elem)[0]

if ( $('#whatever')[0] ) {...}

The jQuery object which is returned by all native jQuery methods is NOT an array, it is an object with many properties; one of them being a "length" property. You can also check for size() or get(0) or get() - 'get(0)' works the same as accessing the first element, i.e. $(elem)[0]

十级心震 2024-07-18 19:25:12

使用 $("#selector").get(0) 来检查 null 。 get 返回 dom 元素,在此之前您正在处理一个数组,您需要在其中检查 length 属性。 我个人不喜欢空处理的长度检查,它由于某种原因让我感到困惑:)

use $("#selector").get(0) to check with null like that. get returns the dom element, until then you re dealing with an array, where you need to check the length property. I personally don't like length check for null handling, it confuses me for some reason :)

吲‖鸣 2024-07-18 19:25:12

使用 length 属性你可以做到这一点。

jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) { 
   //do somthing
}

Using the length property you can do this.

jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) { 
   //do somthing
}
妳是的陽光 2024-07-18 19:25:12

当对象为空时返回此错误:

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 
   }
}

when the object is empty return this error:

Uncaught TypeError: Cannot read property '0' of null

I try this code :

try{
  if ($("#btext" + i).length) {};               
}catch(err){
  if ($("#btext" + i).length) {
     //working this code if the item, not NULL 
   }
}
风吹过旳痕迹 2024-07-18 19:25:12
if (typeof($("#btext" + i)) == 'object'){
    $("#btext" + i).text("Branch " + i);
}
if (typeof($("#btext" + i)) == 'object'){
    $("#btext" + i).text("Branch " + i);
}
清眉祭 2024-07-18 19:25:12

在未定义或空对象上调用 length 属性将导致 IE 和 webkit 浏览器失败!

而是尝试这个:

if($("#something") !== null){
  // do something
}

或者

if($("#something") === null){
  // don't do something
}

Calling length property on undefined or a null object will cause IE and webkit browsers to fail!

Instead try this:

if($("#something") !== null){
  // do something
}

or

if($("#something") === null){
  // don't do something
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文