2013-06-07 3 views
1

Мне очень жаль это спрашивать, но я пробовал все (что я знаю и понимаю) и не могу заставить это работать.Простой, jquery .hover не работает

$("nav > ul > li").hover(function() { 
    var underground = $(this).attr('title'); 
    $("#womble").html(underground); 
},function() { 
    $("#womble").html(overground); 
}); 

Это внешний файл сценария, который вызывается после того, как Jquery1.7.2 вызывается. Я не хочу помещать его в функцию и вызывать ее через обработчик событий HTML DOM onmouseover.

Является ли это, что я не могу определить переменную от $(this), как это, в пределах function(){}? Или это правильно, и это просто не срабатывает по какой-то другой причине?

Переменная «overground» определена глобально в другом месте. И да, теги html <li> имеют "title=", а не "Title=" - так что я тоже проверял это ... Я уверен, что это что-то простое и очевидное. Так много извинений снова за мое невежество и/или глупость.

HTML, является:

<nav> 
<ul> 
<li title="Wombling free"><a></a></li> 
<li title="the wombles of"><a></a></li> 
<li title="Wimbledon Common"></li> 
<li title="are we"></li> 
</ul> 
</nav> 

Спасибо всем, я пытался ставить код в $ (документ) .ready функции дюжину раз, но теперь он работает! ... Большое спасибо за все предложения. Наверное, я не очень хорошо разбираюсь в обработчиках событий, так как думал, что это ничего не изменит. Я думал, что код будет вызван только событием наведения. Но, очевидно, это должно быть в документе. Теперь, чтобы jquery мог каким-то образом зарегистрировать его с помощью соответствующего элемента. Хотя я попытался поместить код в готовый документ.

Сейчас он работает, и на самом деле я понятия не имею, какая разница/ошибка между тем, что я пытался раньше и сейчас! Я застрял все это в функции и поместил ее в функцию document.ready. У меня, должно быть, была небольшая синтаксическая ошибка в конце моего документа. готовый раздел или что-то еще, как я пытался поставить код непосредственно перед десятком раз. Спасибо всем за ваши невероятно быстрые ответы. И если вы не знаете, что такое черта, это была детская программа о говорящих медведях, которая собрала подстилку на Уимблдоне-Обществе с 1970-х годов. Да, я такой старый; вероятно, почему я такой тусклый.

+0

Это выглядит нормально. Что такое nav? это класс или идентификатор? –

+4

[Все это выглядит хорошо для меня в простом случае] (http://jsfiddle.net/jCfKx/) @PaulRadich Это элемент HTML5. – Ohgodwhy

+1

$ ("nav> ul> li") - это правильный селектор? У вас нет ничего между тегами? Попробуйте использовать $ ("nav ul li"). – LukLed

ответ

0

Вставьте эти строки во внешнем файле сценария:

console.log($("nav > ul > li").length); // should log a number > 0 
console.log($("#womble").length);  // should log a number > 0 
console.log(overground);    // should log a defined value 
// just before the problem function 
$("nav > ul > li").hover(function() { 
    var underground = $(this).attr('title'); 
    $("#womble").html(underground); 
},function() { 
    $("#womble").html(overground); 
}); 

Проверьте консоль браузера. Является ли выход ожидаемым?

+0

Это не ответ, но это была ошибка в разделе document.ready, я думаю. Спасибо вам всем. – Max

+0

@Max: Я просто хочу подтвердить, что код работает сейчас. Проблема решена? – pete

-1

Если сценарий jQuery называется до, вызывая HTML через AJAX, тогда HTML не будет существовать на странице, когда jQuery пытается подключить события.

Вместо этого просто вызовите сценарий jQuery после загрузки AJAX страницы. Через вас не указывается, используете ли вы AJAX, я столкнулся с той же проблемой и использовал этот самый метод для ее решения.

+0

@LawrenceAiello Это, по сути, ответ на вопрос. – Doorknob