Javascript 使用Mootools获取子元素值

Javascript 使用Mootools获取子元素值,javascript,html,mootools,Javascript,Html,Mootools,我试图通过使用Mootools(以前的web开发人员似乎已经为我准备好了客户机)首先发现类是否是特定图像的父对象来更改它。我似乎找不到多少关于这个主题的好文档 <div class="textwidget"> <img src="share.jpg"> </div> 现在,我需要遍历它们,并发现上面列出的src所在的子节点 for(var i=0;i<obs.length;i++){ if(obs[i].childnode.src == 'sh

我试图通过使用Mootools(以前的web开发人员似乎已经为我准备好了客户机)首先发现类是否是特定图像的父对象来更改它。我似乎找不到多少关于这个主题的好文档

<div class="textwidget">
<img src="share.jpg">
</div>
现在,我需要遍历它们,并发现上面列出的src所在的子节点

for(var i=0;i<obs.length;i++){
    if(obs[i].childnode.src == 'share.jpg'){ // <-- non mootools syntax
        obs[i].class = 'new class'; // <-- non mootools syntax.
    }
}

for(var i=0;i我认为您想要的是:

for(var i=0;i<obs.length;i++){
    if(obs[i].getChildren()[0].getProperty('src') == 'share.jpg'){ // <-- mootools syntax
        obs[i].setProperty('class','new class'); // <-- mootools syntax.
    }
}

for(var i=0;i您可以通过选择器/父组合执行以下操作:

document.getElements("div.textwidget img[src=share.jpg]").getParent("div.textwidget");

或者你可以更彻底/长篇大论

// css selector, divs array filtered by existance of a child img
results.mixedFilter = document.getElements("div.textwidget").filter(function(el) {
    return el.getElement("img[src=share.jpg]");
});

// checking vs img src properties of all child imgs
results.longwinded = [];
document.getElements("div.textwidget").each(function(el) {
    var imgs = el.getElements("img");
    if (!imgs.length) return;
    if (imgs.some(function(im) {
        return im.get("src") == "share.jpg";
    })) results.longwinded.push(el);
});

这里要做的是过滤元素数组,如下所示:

$$('.text-widget').filter(function(e) {
    var child_img = e.getFirst('img');
    return $defined(child_img) && child_img.get('src') == 'share.jpg'
});
如果传递给“filter”的函数返回true,则将包含该项


您也可以使用选择器作为上述其他答案之一。尽管以这种方式使用选择器可能会出现性能问题?

这就是您要寻找的答案:

$$('img[src=share.jpg]').getParent().set('class', 'newClass');

在操作class属性时,您可能应该使用addClass/removeClass,而不是直接设置它。这样,如果以后应用样式,您就不必担心会删除其他类。如果我理解正确,您只需要获取包含src share.jpg图像的textwidget类div。如果所有图像都具有src share.jpg包含在您正在查找的textwidget类的元素中,那么上面的代码将自动消除textwidget类div的所有非share.jpg实例。
$$('img[src=share.jpg]').getParent().set('class', 'newClass');