2010-08-05 153 views
0

對於命名空間等是一個相當新的東西,所以希望這將是直截了當的。jQuery命名空間全局變量

我有一個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,那麼這個功能就可以工作。

+0

你收到任何錯誤訊息? – 2010-08-05 14:04:35

+0

第 這很奇怪,因爲如果我用'var'前綴聲明變量,它似乎不可用於懸停出功能的一部分。 – RyanP13 2010-08-05 14:07:09

回答

1

改變這一行:

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

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

你不具有可變$thisTitle

在這裏看到:http://jsfiddle.net/qna7W/

我改了一點,否則提示不會一直在視圖

+0

謝謝。 對不起,我的眼睛盯着那一個。 有什麼辦法來擴展全局對象。例如,如果我想在Tooltip函數下有多個全局變量,例如 $ .icisBoard.tooltip。$ thisTitle – RyanP13 2010-08-05 14:38:19

+1

@ RyanP13:當然,您只需將一個對象分配給'$ .icisBoard.tooltip',即'$ .icisBoard.tooltip = {}'。還有一點需要注意:你不必*將這個「名稱空間」添加到jQuery對象中。你可以創建一個全局變量'icisBoard'。 – 2010-08-05 14:53:18