特定のIDのdivがjQueryに存在するかどうかを確認するにはどうすればよいですか?


266

<div>クリックで要素にを追加する関数を持っています。関数は、クリックされた要素のテキストを取得し、それをという変数に割り当てますname。その変数は<div> id、追加された要素のとして使用されます。

私はかどうかを確認する必要がある<div> idname私は要素を追加する前にすでに存在するが、私はこれを見つける方法がわかりません。

これが私のコードです:

$("li.friend").live('click', function() {
  name = $(this).text();

  // if-statement checking for existence of <div> should go here
  // If <div> does not exist, then append element
    $("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");

  // Else
    alert('this record already exists');
});

これはかなり簡単に思えますが、「クラス名を検索中に予期しないファイルの終わり」というエラーが発生します。どういう意味かわかりません。

if (document.getElementById(name)) {
  $("div#" + name).css({bottom: '30px'});
} else {
  $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
}

さらに、この要素を閉じると削除できるようになりdiv id [name]、ドキュメントからを削除する必要が.remove()ありますが、これは行われません。

そのためのコードは次のとおりです。

$(".mini-close").live('click', function(){
  $(this).parent().remove();
});

.mini-close追加機能にの子として追加した.labelsので<div>、必要に応じて追加機能を閉じる方法がありました。.mini-close同じ名前をクリックしてもう一度クリックしようとすると、li.friendsまだが見つかりdiv id [name]ifステートメントの最初の部分が返されます。


予期しないファイルの終わりは、通常、どこかに構文エラーが発生します。 $("div#" + name).css({bottom: '30px'});間違いです、それは正しいはずです$("div#" + name).css('bottom', '30px');
ジェイ・アーバイン

Remove()は、要素をDOMツリーから切り離しますが、それを破棄しません。そのため、IDで検索しても、要素が変数に割り当てられている場合はそれが見つかります。それを見つけて、それを正しいdivに追加します(すでにそこにある場合は何も起こりません、デタッチ/削除された場合は再表示されます)、見つからない場合は作成します。
ジェイアーバイン

回答:


539

次のよう.lengthに、セレクタの後に使用して、要素と一致するかどうかを確認できます。

if($("#" + name).length == 0) {
  //it doesn't exist
}

フルバージョン:

$("li.friend").live('click', function(){
  name = $(this).text();
  if($("#" + name).length == 0) {
    $("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");
  } else {
    alert('this record already exists');
  }
});

または、この部分のjQuery以外のバージョン(IDであるため):

$("li.friend").live('click', function(){
  name = $(this).text();
  if(document.getElementById(name) == null) {
    $("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");
  } else {
    alert('this record already exists');
  }
});

98
jQuery以外の部分に多数のjQuery:p
jAndy 2010

@ニック-これは私のために働いていません。トラブルシューティング中に、[name]のdiv idの長さに警告しましたが、見つかりませんでした。
sadmicrowave 2010

8
チェック== 0 if($( "#" + name).length){}は問題なく動作します。
ScottE 2010

3
@ScottE-それは逆です、つまり!$("#"+name).length):)
Nick Craver

1
===のこぎりの代わりに やった方がいいと思います==
danger89

66

ニックの答えはそれを釘付けにします。getElementByIdの戻り値を、nullと比較するのではなく、直接条件として使用することもできます(どちらの方法でも機能しますが、このスタイルは少し読みやすいと思います)。

if (document.getElementById(name)) {
  alert('this record already exists');
} else {
  // do stuff
}

あなたは正しい、これは素晴らしい働きをします(私は愚かなことをしていたに違いありません)。しかし、alert()を別のものに置き換えると、「クラス名の検索中に予期しないファイルの終わり」というエラーが表示されます。なぜこうなった?alert()関数で置き換えるものについては、OPを参照してください...
sadmicrowave

誰かからの追加のアイデアはありますか?
sadmicrowave 2010

2
エラーは、ブラケットまたはセミコロンがないようです。
Rikki 2014

@Philo配列に保持されている特定のIDを照合する場合
Beaniie

配列にいくつかのIDがあり、それらのそれぞれを検索したいですか?総当たりのアプローチは、配列をループして、それぞれに対してgetElementByIdを呼び出すことです。
フィロ

31

セレクターの長さをチェックしてみてください。セレクターが何かを返す場合、要素は存在する必要があります。

if( $('#selector').length )         // use this if you are using id to check
{
     // it exists
}


if( $('.selector').length )         // use this if you are using class to check
{
     // it exists
}

最初のif条件をidに使用し、2番目のif条件をクラスに使用します。



10
if ( $( "#myDiv" ).length ) {
    //id id ( "#myDiv" ) is exist this will perform
    $( "#myDiv" ).show();

}

別の速記方法:

    $( "#myDiv" ).length && $( "#myDiv" ).show();

実行するid( "#myDiv")が存在する場合に、if関数内の何でも書き込めるその単なる例。
Sanjib Debnath

5

次のようにjqueryを使用して確認できます。

if($('#divId').length!==0){
      Your Code Here
}

1
if($( '#divId')。length!= 0){ここのコード}これは正しいでしょう
Santosh


3

ここに私が使用するjQuery関数があります:

function isExists(var elemId){
    return jQuery('#'+elemId).length > 0;
}

これはブール値を返します。要素が存在する場合、trueを返します。あなたは、クラス名で要素を選択したい場合は、単に置き換える#.


2

さまざまな方法で処理できます。

目的は、divが存在するかどうかを確認してからコードを実行することです。シンプル。

状態:

$('#myDiv').length

注意:

#myDiv -> < div id='myDiv' > <br>
.myDiv -> < div class='myDiv' > 

これは、実行されるたびに数値を返すため、divがない場合はゼロ[0]が返され、0はバイナリでfalseとして表すことができないため、ifステートメントで使用できます。そして、あなたはそれをなしの数との比較として使うことができます。以下の3つのステートメントがありますが

// Statement 0
// jQuery/Ajax has replace [ document.getElementById with $ sign ] and etc
// if you don't want to use jQuery/ajax 

   if (document.getElementById(name)) { 
      $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

// Statement 1
   if ($('#'+ name).length){ // if 0 then false ; if not 0 then true
       $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

// Statement 2
    if(!$('#'+ name).length){ // ! Means Not. So if it 0 not then [0 not is 1]
           $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>"); 
    }
// Statement 3
    if ($('#'+ name).length > 0 ) {
      $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

// Statement 4
    if ($('#'+ name).length !== 0 ) { // length not equal to 0 which mean exist.
       $("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
    }

1

チェックしたいIDをjquery isメソッドに入れます。

var idcheck = $("selector").is("#id"); 

if(idcheck){ // if the selector contains particular id

// your code if particular Id is there

}
else{
// your code if particular Id is NOT there
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.