我看到了用jquery获取第二个类名的方法,但是如何在mootools中实现它,我的元素是 <li class="parent active">
我需要匹配像li.parent.active这样的完整类名,并调整高度,如果该类存在我试过
$$('li').hasClass('parent active') 或者getProperty但是所有这些都返回true,即使没有活动,如果我添加 .parent.active我得到
表达不是法律表达.现在我必须支持在这里工作在CMS上的mootols 1.1,1.2,1.3所以我开始使用丑陋的1.1版本
这是实际需要的
var holderdiv =$('mymenu');
if($$('li.parent.active')){holderdiv.setStyle({'height':'50px'});
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
如果他们不是持有人的孩子,那就做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);
}
Run Code Online (Sandbox Code Playgroud)
在.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");
});
Run Code Online (Sandbox Code Playgroud)
如果所有人都有.parent,并且只有一个人可以活跃,那么你并不在乎,所以你可以这样做
if (holderdiv.getElement("li.active"))
Run Code Online (Sandbox Code Playgroud)
要么
if (holderdiv.getElement("li.active").hasClass("parent"))
Run Code Online (Sandbox Code Playgroud)
...仔细检查他们是否都没有.parent.
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |