if($$('li.parent.active') == true)
возвращает истину как в, это правда (определено, а не ноль).
если вы хотите сказать: есть ли хотя бы один дочерний элемент с .parent и .active, вы можете сделать:
if (holderdiv.getElement("li.parent.active")) // at least one.
holderDiv.setStyle("height", 50); // setStyle uses a value pair, not an object.
если они не являются детьми от holdivdiv, просто сделайте document.getElement
или whateverElObj.getElement
.
это вероятно сломается в 1.11 из-за старых вещей xpath.
Один из способов сделать это, чтобы он работал во всех версиях, был бы следующим (хотя вы должны делать это, только если 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/
если вам нужно сохранить ссылку на список в коллекции, используйте .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.