Передача $ (this) в обратный вызов jQuery fadeOut - PullRequest
1 голос
/ 09 июня 2009

Я знаю, что мне нужно использовать обратный вызов, чтобы html() происходил только после fadeOut(), но внутри обратного вызова fadeOut() у меня нет доступа к $(this) с .hover.

Я попытался передать выделение с помощью var point, но он не работает.

if(!$.browser.msie) {
    points = $("div.point");
} else {
    points = $("div.flash");
}

Проблемная область:

$(points).hover(
        function () {
            var point = $(this);

            $('#features_key').fadeOut('normal', function(point) {
                $('#features_key').html(point.next('.info').clone()).fadeIn('normal');
            });
        }, 
        function () {
        }
    );

HTML:

<div class="feature" id="feature0">
    <div class="point"></div>
    <div class="info"><p>Roof System</p></div>
</div>

Ответы [ 2 ]

8 голосов
/ 09 июня 2009

Не используйте точку в качестве параметра для вашего обратного вызова для fadeOut. Он скроет точечную переменную, которую вы «захватили» ранее:

$(points).hover(
    function () {
            var point = $(this);

            $('#features_key').fadeOut('normal', function() {
                    $('#features_key').html(point.next('.info').clone()).fadeIn('normal');
            });
    }, 
    function () {
    }
);
0 голосов
/ 09 июня 2009

, помещая точку в качестве параметра в функцию обратного вызова, вы сбрасываете ее значение внутри этой функции.

...