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

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

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

或者您可以只使用其中一种 Elements 方法,我认为 .some 将是您的最佳选择:

    var randNumber = 12923

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

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

编辑:

添加一些链接:

在 MooTools 博客上使用 Elements 的更好方法

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

Element.js 源码参考

MDN 上的 Array.some

于 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 回答