sourcecode

jQuery에서 null 객체를 확인하는 방법

copyscript 2023. 8. 2. 09:20
반응형

jQuery에서 null 객체를 확인하는 방법

저는 jQuery를 사용하고 있는데 제 페이지에 요소가 있는지 확인하고 싶습니다.다음 코드를 작성했지만 작동하지 않습니다.

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

요소의 존재를 확인하려면 어떻게 해야 합니까?

jQuery FAQ 확인...

선택기에서 반환한 jQuery 컬렉션의 길이 속성을 사용할 수 있습니다.

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

(저는 그 답을 부결시키기에 충분한 명성이 없는 것 같기 때문에...)

울프는 다음과 같이 썼습니다.

정의되지 않았거나 null 개체의 호출 길이 속성으로 인해 IE 및 웹킷 브라우저가 실패합니다!

대신 다음을 시도합니다.

 // 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 개체의 길이 속성을 호출하면 브라우저가 실패하는 것은 사실이지만, jQuery의 선택기($('...')의 결과는 null이거나 정의되지 않습니다.따라서 코드 제안은 의미가 없습니다.다른 대답 중 하나를 사용하면 더 말이 됩니다.


(Update 2012) 사람들이 코드를 보고 이 대답이 목록에서 상당히 높기 때문입니다.지난 몇 년 동안 저는 이 작은 플러그인을 사용해 왔습니다.

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

$('div').any()$('div')보다 더 잘 읽는 것 같습니다.길이와 더불어 오타로 인한 피해가 크지 않을 것입니다. $('div').ayn()는 런타임 오류 $('div')를 제공합니다.longnight는 조용히 항상 거짓일 가능성이 높습니다.

__
2012년 11월 편집:

사람들은 코드를 보고 코드 주위에 쓰여 있는 것을 읽지 않는 경향이 있기 때문에, 저는 울프의 인용 코드에 두 개의 큰 경고문을 추가했습니다.
저는 이 상황에서 사용하는 작은 플러그인의 코드를 추가했습니다.

조회 함수는 일치하는 요소의 배열을 반환합니다.당신은 길이가 0인지 확인할 수 있습니다.요소를 한 번만 조회하고 필요에 따라 결과를 다시 사용하도록 변경합니다.

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

또한 텍스트 기능을 사용해 본 적이 있습니까? 요소가 없으면 아무 것도 할 수 없습니다.

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

jquery $() 함수는 항상 null이 아닌 값을 반환합니다. 평균 요소가 선택한 cretaria와 일치합니다.요소를 찾을 수 없으면 빈 배열을 반환합니다.그래서 당신의 코드는 다음과 같이 보일 것입니다.

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

jQuery 1.4에서 $.is EmptyObject 함수를 얻을 수 있지만, 만약 당신이 우리처럼 오래된 버전의 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.

"정의되지 않음"을 사용하는 것은 어떻습니까?

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

당신이 무엇을 선택하든 간에 기능입니다.$()테스트에 사용할 수 없도록 항상 jQuery 개체를 반환합니다.지금까지 가장 좋은 방법은 (유일하지 않더라도)size()함수 또는 위에서 설명한 기본 길이 속성.

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

모든 네이티브 jQuery 메서드에서 반환되는 jQuery 개체는 배열이 아니며 많은 속성을 가진 개체입니다. 그 중 하나는 "길이" 속성입니다.또한 size() 또는 get(0) 또는 get(0) - 'get(0)'이 첫 번째 요소에 액세스하는 것과 동일하게 작동하는지 확인할 수 있습니다(예: $(elem)[0]).

사용하다$("#selector").get(0)null합니다. 은 배열을 합니다. length 을 확인해야 합니다. get은 dom 요소를 반환합니다.처리에 않습니다, :) 는개인적저으로처리위한길않이습다니아지다헷니갈립어지떤인이서에유사하를좋 :)

길이 속성을 사용하여 이 작업을 수행할 수 있습니다.

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 (typeof($("#btext" + i)) == 'object'){
    $("#btext" + i).text("Branch " + i);
}

정의되지 않았거나 null 개체의 호출 길이 속성으로 인해 IE 및 웹킷 브라우저가 실패합니다!

대신 다음을 시도합니다.

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

또는

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

언급URL : https://stackoverflow.com/questions/477667/how-to-check-null-objects-in-jquery

반응형