JQuery - зачем мне жить () в этой ситуации? - PullRequest
0 голосов
/ 13 сентября 2010

У меня несколько странная ситуация.Я понимаю предпосылку функций live () и bind (), но в ситуации, когда я считаю, что они мне не нужны, я, по-видимому, делаю.Я объясню.

Я сделал автозаполнение в jquery.Я включил autosuggest.js вверху моей страницы.У меня тогда есть поле ввода.

Основа JS работает вокруг:

$(".autosuggest").keyup(function()
{
}

Это работает - при keyup, моя функция выполняется и т.д., как и ожидалось - мне не нужно использовать live () или bind () в качествеполе ввода находится на странице с самого начала ...

Теперь .. Я также сделал сценарий esque 'star rater'.У меня есть различные

элементы (которые стилизованы), и при наведении на них они рестайлинг ...
 $('.rating li').mouseover(function() {
}

НЕ работает, ДА

 $('.rating li').live('mouseover',function() {
}

DOES.

Почему мне нужно использовать 'live' в этой ситуации, когда я не использую autosuggest?

Спасибо

Ответы [ 4 ]

2 голосов
/ 13 сентября 2010

Единственное, что я могу себе представить, это вызвало бы отсутствие события domready. Это должно работать:

$(function () {
    $('.rating li').mouseover(function() {
    }
});
1 голос
/ 13 сентября 2010

.ratings li еще не проанализирован, когда у вас .mouseover() не работает.

Вы можете обернуть его в $(document).ready(function() {...}); или использовать .live() (который создает привязку для любого в данный момент анализируемого в данный момент в сценарии и любых элементов, добавленных в будущем).

0 голосов
/ 13 сентября 2010

Не видя больше вашего кода, сложно сказать наверняка. Но я предполагаю, что ваш скрипт работает до завершения загрузки страницы. попробуйте обернуть ваши привязки (и все, что зависит от того, какие элементы dom существуют) с вызовом $(document).ready(...).

как то так:

$(document).ready( function() {
    $('.rating li').mouseover(function() {
       // whatever
    });

    $(".autosuggest").keyup(function() {
       // whatever else
    });
});

Если это не так, тогда опубликуйте больше своего кода, и мы покопаемся дальше.

удачи.

0 голосов
/ 13 сентября 2010

Вы положили

$('.rating li').mouseover(function() {
}
в $ (документ) .ready (function () {....}?

Даже если вы включите файл .js, если элементы на странице ('rating li') не загружены, связывание не будет выполнено.

...