2010-06-25 69 views
0

我试图通过首先发现它是否是使用Mootools(客户以前的Web开发人员似乎拥有它)的特定图像的父对象来更改类。我似乎无法找到关于这个问题的很多好文件。使用Mootools获取子元素值

<div class="textwidget"> 
<img src="share.jpg"> 
</div> 

到目前为止,我已经成功地找到所有与类“textwidget”的div使用:

var obs = $$('.textwidget'); 

现在我需要通过他们循环,并发现它承载一个子节点与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. 
    } 
} 

我想运行这样的循环,但在mootools说当然。任何人都熟悉正确的语法?

感谢 -J

回答

1

我想你想的是一样的东西:

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. 
    } 
} 

你可以在这里找到更多的细节:

http://mootools.net/docs/core/Element/Element

+0

你摇滚,谢谢。 – 2010-06-25 19:32:21

+0

您应该在操作类属性时使用addClass/removeClass,而不是直接设置它。然后,如果稍后应用样式,则不必担心会擦除其他课程。 – Nathan 2010-06-28 11:04:03

1

你可以做这样的事情通过选择器/父组合:

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

http://www.jsfiddle.net/MBc37/4/

,或者你可以更透彻/冗长......

// 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); 
}); 
0

你想在这里做的是过滤元件的像这样的数组:

$$('.text-widget').filter(function(e) { 
    var child_img = e.getFirst('img'); 
    return $defined(child_img) && child_img.get('src') == 'share.jpg' 
}); 

如果传递给'filter'的函数返回true,则包含该项目。

你也可以使用选择器作为提到的其他答案之一。虽然以这种方式使用它们可能会有性能问题?

0

这是你在找什么:

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

如果我正确理解你,你只想得到包含src share.jpg图像的textwidget分类div。 如果所有带有src share.jpg的图像都包含在您正在查找的textwidget类的元素中,那么上面的代码将自动消除所有的textwidget分类div的非share.jpg实例。 – csuwldcat 2011-03-10 05:32:36