Итерация изменений с использованием jQuery? - PullRequest
1 голос
/ 20 апреля 2010

В приведенном ниже HTML-коде я хотел бы скопировать "submitby" рядом с "message" в теге H2:

<div class="comment">
<H2 class="threadtitle">Message 1</h2>
<span class="submittedby">James</a>
</div>

<div class="comment">
<H2 class="threadtitle">Message 2</h2>
<span class="submittedby">Bill</a>
</div>

<div class="comment">
<H2 class="threadtitle">Message 3</h2>
<div class="submittedby">Phil</a>
</div>

Мой текущий код jQuery выглядит следующим образом:

$(document).ready(function() { 
    $('.submittedby').copy().appendTo('.threadtitle');
});

Проблема в том, что это копирует КАЖДОЕ «представленное» в КАЖДОЕ «нить заголовка».Как мне его кодировать, чтобы он копировал только «submitby» из того же div «comment»?Спасибо!

Ответы [ 5 ]

4 голосов
/ 20 апреля 2010

Используйте .each() здесь, вот так:

$(function(){ 
  $('.submittedby').each(function() {
    $(this).clone().appendTo($(this).siblings('.threadtitle'));
  });
});

Это зацикливается на каждом элементе .submittedby и перемещает его относительно тока .submittedby, который вы находитесь в цикле, поэтому каждый из них обрабатывается индивидуально. Также я предположил, что вы имели в виду .clone() здесь, но если вы на самом деле используете плагин .copy() , просто замените .clone() на .copy() в приведенном выше коде.

1 голос
/ 20 апреля 2010
$('.submittedby').each(function() {
    $(this).prev('.threadtitle').append($(this).html());
});
1 голос
/ 20 апреля 2010
$('.submittedBy'.each(function() {
  var $sb = $(this);
  $sb.copy().appendTo($sb.closest('.comment').find('h2.threadtitle'));
});

Когда вы используете .each(), вы получаете запуск кода для каждого элемента.

edit спасибо @ Ник

0 голосов
/ 20 апреля 2010

Попробуйте ограничить по родителю:

$(document).ready(function(){ 
    $('.submittedby:parent').each(function(){
        $(this).find('.submittedby').copy().appendTo('.threadtitle');
    })
});
0 голосов
/ 20 апреля 2010
$(document).ready(function(){ 
    $('span.submittedby, div.submittedby').each(function() { 
        self = $(this);
        self.before(self.clone());
    });
});

Обязательный пример

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