jQuery命名空间全局变量

时间:2010-08-05 13:58:42

标签: jquery namespaces

对于命名空间等非常新,所以希望这很简单。

我在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 个答案:

答案 0 :(得分:1)

更改此行:

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

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

您没有变量$thisTitle

见这里:http://jsfiddle.net/qna7W/

我改了一下,否则工具提示不会出现在视图中