Mootools获得二等名称

时间:2011-10-28 11:47:20

标签: mootools

我看到用jquery获取第二个类名的方法,但我怎么在mootools中做,我的元素是<li class="parent active">

我需要匹配像li.parent.active这样的完整类名,并调整高度,如果该类存在,我试过  $$('li').hasClass('parent active')或getProperty但是如果我添加 .parent.active 我得到

,即使没有活动,所有这些都会返回true

表达式不是法律表达。现在我必须支持在这里工作在CMS上的mootols 1.1,1.2,1.3,所以我从丑陋的1.1版开始

这是实际需要的方式

var holderdiv =$('mymenu');
if($$('li.parent.active')){holderdiv.setStyle({'height':'50px'});

2 个答案:

答案 0 :(得分:6)

if($$('li.parent.active') == true)返回true,因为它是真实的(已定义,非空)。

如果你的意思是说:是否至少有一个具有.parent和.active的子元素,你可以这样做:

if (holderdiv.getElement("li.parent.active")) // at least one.
    holderDiv.setStyle("height", 50); // setStyle uses a value pair, not an object.

如果他们不是持有人的孩子,请改为document.getElementwhateverElObj.getElement

由于旧的xpath内容,这可能会在1.11中破坏。

这样做的一种方法是它适用于所有版本(虽然你应该只在MooTools.version由于双循环的性能成本而错误时才这样做):

var holderdiv = $("holderdiv");

if (holderdiv.getElements("li.parent").some(function(el){ return el.hasClass("active"); })) {
    // at least one.
    holderdiv.setStyle("height", 50);
}

.some将遍历所有li.parent,直到找到匹配条件(hasClass("active")),然后返回布尔值为true,否则为false。

http://jsfiddle.net/dimitar/BqwAk/

如果您需要将lis的引用保留到集合中,请改用.filter

var lis = holderdiv.getElements("li.parent").filter(function(el){ 
    return el.hasClass("active"); 
});

如果所有人都有.parent并且只有一个可以活跃,那么你真的不在乎你可以这样做

if (holderdiv.getElement("li.active"))

if (holderdiv.getElement("li.active").hasClass("parent"))

...仔细检查他们是否都没有.parent。

答案 1 :(得分:0)

您可以简单地将所有元素与parentactive类匹配并设置其样式,MooTools可以轻松实现:

$$('li.parent.active').setStyle({'height':'50px'});