Глобальная переменная пространства имен jQuery - PullRequest
0 голосов
/ 05 августа 2010

Я довольно плохо знаком с пространством имен и т. Д., Поэтому, надеюсь, это будет просто.

У меня есть переменная в функции наведения jQuery, которую нужно сделать доступной для глобального пространства.

Для именования моих глобальных переменных я поместил этот код в файл JS, который находится перед любым другим кодом JS:

$(function() {

    // Namespace
    jQuery.icisBoard = {};

});

У меня есть функция всплывающей подсказки, которая появляется после этого в отдельном файле JS:

// Tooltip function
$(function() {

    $('.w_market_updates ul li a:contains("...")').addClass('tip_holder');

    $(".tip_holder").hover(function() {

        var $containerWidth = $(this).width();

        var $offset = $(this).offset();

        $.icisBoard.$thisTitle = $(this).attr('title');

        $('#icis_dashboard').prepend('<div id="tooltip">' + $thisTitle + '</div>');

        $(this).attr('title', '')        

        var $tipWidth = $('#tooltip').width();

        var $tipHeight = $('#tooltip').height();

        $('#tooltip').css({
            'display': 'block',
            'position': 'absolute',
            'top': $offset.top - ($tipHeight + 5),
            'left': $offset.left - ($tipWidth - $containerWidth) / 2
        });

    }, function() {

        $('#tooltip').remove();

        $(this).attr('title', $.icisBoard.$thisTitle) 

    });


});

Это не работает для меня, так как знаю, что функция наведения не работает. Я все понял неправильно? Я даже не уверен, что переменная в любом случае доступна для глобальной области видимости в этом случае, и если у меня просто $thisTitle вместо $.icisBoard.$thisTitle, функциональность работает.

1 Ответ

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

Изменить эту строку:

$('#icis_dashboard').prepend('<div id="tooltip">' + $thisTitle + '</div>');

до

$('#icis_dashboard').prepend('<div id="tooltip">' + $.icisBoard.$thisTitle + '</div>');

У вас нет переменной $thisTitle.

Смотрите здесь: http://jsfiddle.net/qna7W/

( Я немного его изменил, иначе подсказка не была бы в представлении )

...