2

現在、特定のdivクラスに値を割り当てる動的な文字列があります。出力は次のようになります

  <div class="12923"></div>

その'randNumber'divを見つけて、別のクラス'x'があるかどうかを確認したい

現在、私が今持っているものは機能しません:

  var randNumber = 12923

  var lookingForYou = $$('.'+randNumber);
  if (lookingForYou.hasClass('XCLASS')){alert('XCLASS FOUND!');}
4

3 に答える 3

2

$$ returns an Elements instance, Elements is an array-like Class anyway since you are basically filtering, you can tell Slick that you need an element with both class:

 var randNumber = 12923;
 if($$('.' + randNumber +'.XCLASS').length>0){
     alert('XCLASS FOUND');
 }else{
     //dostuff
 }

or you could just use one of the Elements methods, I think .some will be your best choice here:

    var randNumber = 12923

    var lookingForYou = $$('.' + randNumber);

    alert(lookingForYou.some(function(el){
        return el.hasClass('XCLASS');
    }))

EDIT:

adding some links:

A better way to use Elements on MooTools blog

in my second example I used the some method, which, by looking at the source is not overloaded, but is just the one in Array.prototype.some:

Element.js source reference

Array.some on MDN

于 2012-08-23T20:58:31.330 に答える
1

$$は、一致するすべての要素の配列を返します。配列に対してhasclassを実行できるかどうかわからない。.each()を実行してから実行する必要がある場合があります。$('body')。getElement('。'+ randNumber).hasClass('XCLASS')を試してください。配列をいじりたくない場合は、この方法で1つの要素を取得します。

于 2012-08-23T19:58:48.317 に答える
1

ここ:

if (lookingForYou.hasClass('XCLASS')){alert('XCLASS FOUND!');}

$$()配列を返し、配列のhasClass()各要素に対してチェックを実行して、ブール値の配列を返します。残念ながら、をチェックすると、すべての値がである場合でもif (...)、戻り配列は空ではないためと評価されます。falsetrue

于 2012-08-23T20:00:39.433 に答える