jQuery - область действия в пределах «каждого»? - PullRequest
2 голосов
/ 10 августа 2011

У меня три тд и я пытаюсь ограничить функцию внутри каждый только этим тд.Как мне это сделать?С этим кодом он берет все 3 изображения и вставляет их все до h2:

jQuery("td.frontpage_news").each(function() {
    jQuery("span.frontpage_news p:first-child").has("a img").insertBefore("h2.contentheading.frontpage_news");      });

Ответы [ 3 ]

3 голосов
/ 10 августа 2011

Вы можете использовать $(this), чтобы получить элемент, обрабатываемый в данный момент each - использование этого объекта в сочетании с find позволит вам охватить ваши вызовы:

jQuery("td.frontpage_news").each(function() {
    var $that = jQuery(this);
    var $thatHeading = $that.find("h2.contentheading.frontpage_news");
    $that.find("span.frontpage_news p:first-child")
         .has("a img").insertBefore( $thatHeading  );
});

Предполагается, что заголовки контента и новости на первой странице являются дочерними элементами td.

1 голос
/ 10 августа 2011

Вы можете сделать это без использования каждого.Просто используйте это:

jQuery("td.frontpage_news span.frontpage_news p:first-child").has("a img").insertBefore("h2.contentheading.frontpage_news");   

Если вам действительно нужно использовать каждый из них, предоставьте контекст this для jquery для поиска по n

jQuery("td.frontpage_news").each(function() {
    jQuery("span.frontpage_news p:first-child", this).has("a img").insertBefore("h2.contentheading.frontpage_news");      
});
0 голосов
/ 10 августа 2011

Попробуйте это:

jQuery("h2.contentheading.frontpage_news").before(jQuery("td.frontpage_news span.frontpage_news p:first-child").has("a img")); 
...