我看到用jquery获取第二个类名的方法,但我怎么在mootools中做,我的元素是<li class="parent active">
我需要匹配像li.parent.active这样的完整类名,并调整高度,如果该类存在,我试过
$$('li').hasClass('parent active')
或getProperty但是如果我添加 .parent.active 我得到
表达式不是法律表达。现在我必须支持在这里工作在CMS上的mootols 1.1,1.2,1.3,所以我从丑陋的1.1版开始
这是实际需要的方式
var holderdiv =$('mymenu');
if($$('li.parent.active')){holderdiv.setStyle({'height':'50px'});
答案 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.getElement
或whateverElObj.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)
您可以简单地将所有元素与parent
和active
类匹配并设置其样式,MooTools可以轻松实现:
$$('li.parent.active').setStyle({'height':'50px'});