2012-08-23 72 views
2

现在我有一个动态字符串,它将值赋给一个特定的div类。 输出看起来像这样Mootools选择器问题

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

我想找到“randNumber” DIV,然后检查是否有另一个类的“x”

目前,我现在有什么不工作:

var randNumber = 12923 

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

回答

1

$$返回所有匹配元素的数组。不知道你是否可以在数组上做一个hasclass。可能必须做一个.each()然后做。尝试$('body')。getElement('。'+ randNumber).hasClass('XCLASS')这样你就可以抓取1个元素,如果你不想混乱数组。

1

这里:

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

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

2

$$返回一个元素实例,元素是一个数组类类 反正因为你基本上筛选,你可以告诉油滑,你需要一个元素与两个类:

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

或者你可以只使用的元素的方法之一,我认为。有些会是您最佳的选择在这里:

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