Как выбрать дочерние элементы в цикле .each, используя JQuery? - PullRequest
5 голосов
/ 04 июля 2011

Я пытаюсь выбрать теги <img> в каждом из моих тегов <a>, которые имеют имя класса customurl.

Я знаю, что могу сделать это на одном <a> так:

$(".customurl img");

Но я пытаюсь выяснить, каков синтаксис в .each, например:

$(".customurl").each(function(i)
{
    var t = $(this);

    // select child <img> within t
    // (for this iteration)
});

Вот фрагмент кода HTML для дальнейшего пояснения:

<a class="customurl"><img src="blah" /> Some text</a>
<a class="customurl"><img src="blah" /> Some text</a>
<a class="customurl"><img src="blah" /> Some text</a>

Ответы [ 2 ]

6 голосов
/ 04 июля 2011

Используйте метод children() [документы] .

$(".customurl").each(function(i)
{
    var t = $(this).children('img');

});

или если вы не хотите, чтобы перед изображением были текстовые узлы (включая пробелы):

$(".customurl").each(function(i)
{
    var t = $(this.firstChild);

});

... Но если вы просто собираетесь запустить методы jQuery, они итерируются для вас:

$(".customurl > img").attr(/*...*/);

Применится метод attr() [документы] к каждому элементу в результате.

Кроме того, некоторые методы, такие как .attr(), будут принимать обратный вызов в качестве аргумента.

$(".customurl > img").attr('src', function(i,src) {
     // give each <img> a calculated value for its src
    return 'some_new_value_' + i;
});
5 голосов
/ 04 июля 2011

Используйте .find ('')

$(this).find('img')

или

t.find('img')

, или это также работает с использованием второго параметра .each ():

$(".customurl").each(function(i, elem)
{
    $(elem).find('img')

Если вам нужно только первое изображение (при условии, что у вас их больше одного):

$(this).find('img:first')

или

$(this).find('img:first-child')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...