2012-03-09 4 views
0

Я пытаюсь создать скрипт с javascript и jquery, в котором один элемент реагирует, когда мышь зависает над другим элементом. Мне очень помогли дойти до этого момента, но я думаю, что я что-то привожу сюда. Я работаю в одном направлении, но не в другом. В направлении, в котором он работает, есть текст внутри анкерного элемента. В направлении, в котором он не работает, есть изображение внутри якоря. Это может быть бесполезно, не уверен. Я отправил упрощенную версию всего этого здесь: http://jsfiddle.net/vZAYY/14/ Похоже, что браузер не находит элемент LI (она возвращает -1)Эффект зависания с img внутри анкера

Еще одна вещь, которая является странным является то, что на полном месте (который Я работаю локально) не работает, хотя для сборки js скрипка я просто скопировал код напрямую. Это на сайте с drupal, и там скрипт возвращает -1 от hovers на обоих элементах.

Любые предложения?

+0

Небольшое обновление с использованием 'ближайшего()' вместо нескольких вызовов 'parent()'. Не могли бы вы уменьшить это до минимального примера? И ясно укажите, что должно произойти, когда вы наведете ссылку/изображение? –

+0

Я попытался использовать ближайший(), но не смог заставить его работать. В идеале, что я пытаюсь сделать, так это то, что когда изображение зависло, ссылка (текст) меняет цвет, а изображение становится немного непрозрачным - и то же самое происходит, когда ссылка (текст) зависнет. Я мог бы изменить классы, чтобы они соответствовали, если он упрощает javascript. Жесткая часть: я не знаю много о javascript, если вы не могли сказать. Любые советы очень ценятся. – jaron

ответ

0

Ваш код немного беспорядок, но если что-то возвращается -1, это должно быть функция index(). Не могу сказать точно, но ваша проблема может быть здесь:

var x = $(this).parent().parent().parent("li").index(); 
$(".mainNavigation ul li:eq(" + x + ")").addClass("active"); 

Я не уверен, что parent().parent().parent('li').index() является лучшей идеей. Я имею в виду, что index() принимает контекст, который вы можете указать. Рекомендуется кэшировать ваши селекторы заранее.
Во второй строке вместо :eq Я бы использовал eq(), который будет быстрее и предсказуем.