2

基本的にを示すjQueryを使用して条件を記述しようとすると、div.gatheringが含まれていない場合a.cat-linkは、次のようにします。次のことを試しましたが、うまくいかないようです。誰かがこれに光を当てることができますか?

if($("div.gathering:contains('a.cat-link')")){
    $(".gathering").append("<a href='#"+data[i]["categories"][0]["category_id"]+"div' class='cat-link' id='"+data[i]["categories"][0]["category_id"]+"' rel='external'>"+data[i]["categories"][0]["category_name"]+"<br />");
}
4

2 に答える 2

7

これはどう :

if($("div.gathering").find("a.cat-link").length == 0){
  // Conditional statement returned TRUE
}

jQueryセレクターは、指定されたセレクターに一致するオブジェクトの配列を返します。lengthこれが、プロパティ を使用する理由です。

使用したメソッド-は空の配列返し、実際に存在するオブジェクト$("div.gathering:contains('a.cat-link')")
に対してテストする場合(空の配列であっても)、JavaScriptはを返します。true

例 -

var nateArr = []; 
if (nateArr){
  // Do the dishes...
}else{
 // Eat some waffles...
}

これを自分でテストする場合、それらの皿の洗浄を停止することはありません。これは、にnateArr含まれる要素がゼロであっても、それがまだ存在しているため、条件ステートメントは常にを返すためtrueです。
そして、あなたの指はすべてしわになります

于 2012-04-10T18:48:36.827 に答える
2

これを試して....

$("div.gathering:not(:contains(a.cat-link))")
    .append("<a href='#"+data[i]["categories"][0]["category_id"]+"div' class='cat-link' id='"+data[i]["categories"][0]["category_id"]+"' rel='external'>"+data[i]["categories"][0]["category_name"]+"<br />")

これは、a.cat-link...を持たないクラスギャザリングを含むdivのみを返します。

お役に立てれば....

于 2012-04-10T19:01:47.937 に答える