2016-01-27 2 views
0

Как мне перебирать набор чисел для целей моих элементов? Например.Динамический селектор jQuery через петлю?

for (i = 1; i < 9; i++) { 
     $('myPetal'+i).myX = 500; 
     $('myPetal'+i).myY = 500; 
    } 
+0

Можете ли вы предоставить список элементов, которые вы пытаетесь перебрать? Возможно, вам не понадобится петля. – Scott

+0

Вы выбираете '' элементов .... Я очень сомневаюсь, что у вас есть элементы. – epascarello

+0

Да, извините, мое плохое, это должно быть .myPetal ... Спасибо, что выделили его! –

ответ

1

Не забыть в JQuery вам все еще нужно селекторы:

Для идентификаторов вы сделали бы

for (var i = 1; i < 9; i++) { 
     $('#myPetal'+i).myX = 500; 
     $('#myPetal'+i).myY = 500; 
} 

А для классов

for (var i = 1; i < 9; i++) { 
     $('.myPetal'+i).myX = 500; 
     $('.myPetal'+i).myY = 500; 
    } 

Ваш пример кода будет выглядеть для <myPetal[i]> в DOM.

+0

О да, мой плохой. Так что + я действительно работаю? Благодаря! –

+0

Все, что вы ставите между '$ (' и '). *' Будет конкатенировать, как и все остальное в javascript. – Mark

+0

Также вам нужно инициализировать 'i' как переменную - я отредактировал свой ответ, чтобы отразить. – Mark

0

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

$("*[class^='myPetal']").attr('myY', 500); 

Та же самая идея может быть применена в случае использования других атрибутов

+0

Прохладный! Я не знал, что ты можешь это сделать! Но я понял, что вы не можете напрямую добавлять такие атрибуты. = (Должен пройти какой-то другой способ, я думаю. –

+0

@KelvinZhao, см. Мое редактирование ... просто исправил его –

0

$('.class1').attr('myX', 500); 
 
$('.class1').attr('myY', 500); 
 
$('.class1').html('myX : '+$('.class1').attr('myX') + ' myY : '+$('.class1').attr('myY'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="class1">class1</div> 
 
<div class="class1">class1</div> 
 
<div class="class1">class1</div>

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

$('.class1').each(function(){ 
    $(this).attr('myX', 500); 
    $(this).attr('myY', 500); 
}) 
+0

Nice! Спасибо! Это то, что я искал. –