Mootools选择器问题

时间:2012-08-23 19:52:52

标签: javascript mootools

现在我有一个动态字符串,它将值分配给特定的div类。 输出看起来像这样

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

我想找到'randNumber'div,然后检查它是否有另一个类'x'

目前我现在所做的不起作用:

  var randNumber = 12923

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

3 个答案:

答案 0 :(得分:2)

$$返回一个Elements实例,Elements是一个类似数组的类 无论如何,因为你基本上是过滤,你可以告诉Slick你需要一个同时具有这两个类的元素:

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

或者您可以使用其中一种Elements方法,我认为。这将是您最好的选择:

    var randNumber = 12923

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

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

编辑:

添加一些链接:

A better way to use Elements on MooTools blog

在我的第二个例子中,我使用了一些方法,通过查看源代码没有重载,但只是Array.prototype.some中的那个:

Element.js source reference

Array.some on MDN

答案 1 :(得分:1)

$$返回所有匹配元素的数组。不确定您是否可以在阵列上执行hasclass。可能必须做一个.each()然后做。尝试$('body')。getElement('。'+ randNumber).hasClass('XCLASS')这样你就可以抓住1个elem,如果你不想搞乱这个数组的话。

答案 2 :(得分:1)

下面:

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

$$()返回一个数组,hasClass()对数组的每个元素执行检查,返回一个布尔数组。不幸的是,当您检查if (...)时,返回数组即使所有值都是false ,也会被评估为true,因为它不是空的。