jQuery цикл через возможные элементы, чтобы увидеть, существуют ли они? - PullRequest
2 голосов
/ 11 февраля 2011

У меня есть несколько jQuery, как это:

$('#mydiv1').css('color', 'red');
$('#mydiv2').css('color', 'blue');
$('#mydiv3').css('color', 'green');
$('#mydiv4').css('color', 'orange');
$('#mydiv5').css('color', 'purple');

Я думаю, что так и должно быть, поэтому он действует, только если элемент существует:

if ($('#mydiv1').length) {.css('color', 'red')}
if ($('#mydiv2').length) {.css('color', 'blue')}
if ($('#mydiv3').length) {.css('color', 'green')}
...

Есть ли лучший способ проверить, существуют ли элементы, с этим соглашением об именах? Что-то вроде «для каждого #mydiv (n)»?

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

Проверка наличия элемента не требуется с помощью jQuery.Ничего не поделаешь, если не найдено подходящих элементов.

Если вам нужен более короткий способ применить CSS ко всем идентификаторам, следующим по этому шаблону, то вы можете сделать:1005 * Если вы хотите применить эти цвета в порядке документа (порядок элементов отображаются в HTML), вы можете использовать селектор атрибута начального атрибута jQuery :

$('[id^=mydiv]').each(function (i) {
    $(this).css('color', colors[i]);
});
2 голосов
/ 11 февраля 2011

Функция jQuery ($) возвращает коллекцию элементов (никогда не значение null или undefined), поэтому, если для данного селектора length коллекции равно 0, код (в вашем случае вызов .css()) не будет выполнен или вызовет что-либо подобное исключению ссылки null.

...