Ищете лучшее / элегантное решение для добавления DIVs с JQuery в списках - PullRequest
0 голосов
/ 18 августа 2010

Я учил себя JS и Jquery в первую очередь для сценариев GM (я не программист по дням) и пытался найти решение добавить DIV в другой DIV для каждого листинга на autotrader.com. Они братья и сестры под несколькими родителями. Полный код здесь http://userscripts.org/scripts/review/83865 и работает.

Я придумал это:

var counter=0;
$('.dealer-info').each(function(){
$(this).appendTo($('.car-info')[counter]);
counter=counter+1;
});

Есть ли более элегантный способ сделать это?

Буду признателен за любой совет, так как я хочу, чтобы мой код был проще.

С уважением, Антони

Ответы [ 3 ]

1 голос
/ 18 августа 2010

.each() предоставляет индекс в качестве первой переменной для функции обратного вызова, поэтому вы можете сделать это:

$('.dealer-info').each(function(i) {
  $('.car-info').eq(i).append(this);
});

Поскольку .appendTo() простопереворачивается на .append() внутренне, это менее расточительно и немного проще для глаз сделать это таким образом, используя .eq(), чтобы получить элемент по этому индексу.

Чтобы быть более производительным, вы должны хранить ссылку на .car-info вне цикла, например:

var cars = $('.car-info');
$('.dealer-info').each(function(i) {
  cars.eq(i).append(this);
});
0 голосов
/ 18 августа 2010

Вдоль строк вашего кода, но немного более jQuery способ.Не пробовал это, но должно работать нормально.

$('.dealer-info').each(function(index, value){
     $(this).appendTo($('.car-info').eq(index));
});
0 голосов
/ 18 августа 2010

То есть, вы хотите добавить каждый элемент с классом "kerner-info "к каждому элементу с классом" car-info "?

Разве $(".dealer-info").appendTo($(".car-info")); не делает этого?

...