Я не могу заставить жить () вести себя как при наведении () - PullRequest
1 голос
/ 01 августа 2010

У меня действительно большая проблема с живым связыванием в jQuery 1.4. Я хочу привязать событие наведения к элементам div.message и исчезнуть в элементах управления. Они скрыты по умолчанию. Это легко при использовании .hover(), но не связывает новые элементы, которые добавляются через ajax. Я пробовал .live() безуспешно. Он запускает события mouseover и mouseout каждый раз, когда курсор перемещается над различным содержимым сообщений. Как вы можете себе представить, это заставляет элементы управления мерцать. Я хочу, чтобы элементы управления исчезали, когда указатель мыши находится над сообщением. Но мне нужно привязать эффект к новым сообщениям по мере их загрузки. Я привык к привязке парящих событий при загрузке сообщений. Я бы предпочел решение типа live, но работает точно так же, как при наведении.

<div id="messages">
    <div class="message">
        <div class="controls">
            <a href="dosomthing">
                do somthing
            </a>
            <a href="dosomthing">
                do somthing
            </a>
        </div>
        <p>blah blah blah</p>
    </div>
    <div class="message">
        <div class="controls">
        </div>
        <p>blah blah blah</p>
    </div>
    <div class="message">
        <div class="controls">
            <a href="dosomthing">
                do somthing
            </a>
            <a href="dosomthing">
                do somthing
            </a>
        </div>
        <p>blah blah blah</p>
    </div>
</div>

1 Ответ

1 голос
/ 01 августа 2010

Чтобы обойти это, вы можете использовать delegate, добавленный в версию 1.4.2 вместо этого:

$("#container").delegate("div", "hover", function(){
    // your code....
});

.delegate ()

Описание: присоединить обработчик к одному или нескольким событиям для всех элементов, соответствующих селектору, сейчас или в будущем , на основе определенного набора rootэлементы.

...