2017-02-21 2 views
3

Исключены ошибки, вызванные ошибкой.jquery присваивает разные значения элементу заголовка того же класса

У меня есть группа изображений и их URL. Все они находятся в одном классе. Я хотел бы присвоить новое название изображению на основе их позиции индекса. Например, изображения 1-3 должны быть «Лучистыми цветами», 4-6 - славными кустарниками.

$('.flower').each(function (index, value) { 
     console.log(index + ':' + $(this).attr('title')); 
     if (index === 2)) { 
     $('.flower').attr('title',"Radiant Flowers"); 
     } 
    }); 

консоль показывает следующий вывод:

  • 0: Марипос Лиля - калохортус видов
  • 1: Марипос лилии - калохортус вида
  • 2: Марипос лилия - калохортус Виды
  • 3: Сияющие цветы

Поэтому, когда я проверяю элементы, названия все изменены на Radiant Flowers. Я заметил, что когда я могу заставить это работать, код меняет все значения, а не те, на которые я надеялся повлиять. Есть ли способ сделать это?

+0

Вы регистрируете свой титул на линии два, прежде чем вы изменили его на линии 4. Это намеренным? Похоже, то, что вы делаете, должно работать. – minorcase

+0

Я хотел удостовериться, что значения были затронуты программой. Не зная о jquery, я опирался на консоль, чтобы сообщить, что код что-то делает. Заголовок отображается в журнале, но не на фактической странице. –

+0

Я отредактировал свой ответ, надеюсь, что это поможет – Igor

ответ

2

Ваш ParseInt принимает плохой аргумент: «индекс»> 2 Вы должны изменить его ParseInt (индекс)> 2, я думаю ...

О актуальной проблеме: вам цикл через ваши элементы и вам определить тот, который вы хотите изменить ... и затем вы модифицируете все элементы с помощью класса «цветок».

Хороший способ сделать это было бы поместить это в ваше «если»: $ (this) .attr ('title', "Radiant Flowers");

Причина в том, что $ ('. Flower') будет выбирать ВСЕ элементы с CSS-классом «flower», но вам нужно изменить только текущий элемент. Поэтому $ (это) должно работать. Еще лучше, вы можете использовать $ (value) becase «value» - это переменная, которая указывает на текущий элемент в цикле foreach.

+0

Это тоже моя догадка. Вы пытаетесь parseInt логическое значение, поскольку ('index'> 2) будет оценен (как false), и результат будет проанализирован. – jonifen

1

Что там случилось, что эта строка: $('.flower').attr('title',"Radiant Flowers"); фактически изменить все элементов с классом flower, а не те, которые вы хотели изменить.

Для того, чтобы исправить это, в вас коде, это изменить:

if (index === 2)) { 
    $('.flower').attr('title',"Radiant Flowers"); 
} 

в

if (index > 2)) { 
    $(this).attr('title',"Radiant Flowers"); 
} 
+0

так просто! Спасибо! –

+1

@George Sherman So ...Принимая это правильный путь :-) –

Смежные вопросы