Получить значение дочернего элемента с Mootools - PullRequest
0 голосов
/ 25 июня 2010

Я пытаюсь изменить класс, сначала обнаружив, является ли он родительским объектом для определенного изображения, с помощью Mootools (клиенты предыдущего веб-разработчика, казалось, имели его для меня).Кажется, я не могу найти много хорошей документации по этому вопросу.

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

До сих пор мне удалось найти все div с помощью класса 'textwidget', используя:

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

Ответы [ 4 ]

1 голос
/ 25 июня 2010

вы можете сделать что-то подобное с помощью селектора / родительской комбинации:

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);
});
1 голос
/ 25 июня 2010

Я думаю, что вы хотите что-то вроде:

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 голосов
/ 10 марта 2011

Это то, что вы ищете:

$$('img[src=share.jpg]').getParent().set('class', 'newClass');
0 голосов
/ 28 июня 2010

Здесь вы хотите отфильтровать массив элементов следующим образом:

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

Если функция, переданная фильтру, возвращает true, элемент включается.

Вы можететакже используйте селекторы в качестве одного из других упомянутых ответов.Хотя могут быть проблемы с производительностью при их использовании таким образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...