Функция наведения jQuery не работает для всех div - PullRequest
4 голосов
/ 23 ноября 2010

Я из Германии, так что будьте терпеливы с моим английским: D

Я забочусь о функции наведения в jQuery, чтобы изменить цвет фона некоторых элементов на моей странице. Проблема не в том, что каждый div действует, когда я наводю на него курсор.

 $(document).ready(function(){
  $('#book').hover(function(){
   $(this).css('background', '#dfdfdf');
  }, function(){
   $(this).css('background', '#eee');
  });
 });

Первый div на моей странице абсолютно в порядке. Но секунды div ничего не делают, когда я нахожу это. Что не так: D

Спасибо!

Ответы [ 3 ]

4 голосов
/ 23 ноября 2010

Это потому, что вы дублируете идентификаторы ваших дивов.Идентификаторы, по определению, должны быть уникальными.Попробуйте назначить каждому div класс 'book' и связывание hover, например так:

$('.book').hover(function(){...

См. Спецификацию: http://www.w3.org/TR/html4/struct/global.html#h-7.5.2

Соответствующий отрывок:

id = name [CS]

Этот атрибут присваивает имя элементу.Это имя должно быть уникальным в документе.

3 голосов
/ 23 ноября 2010

Вы используете #book для назначения наведения.

Но идентификаторы должны быть уникальными, и jQuery учитывает это, поэтому применяет обработчик событий только к первому элементу с идентификатором.

Вместо этого используйте классы.

0 голосов
/ 23 ноября 2010

вам нужно сослаться на несколько DIV с разными идентификаторами (которые должны быть уникальными на странице) или по классам. так что поменяйте <DIV id='book' на <DIV class='book' и $('#book') на $('.book')

...