2011-07-07 51 views
3

我不完全理解JavaScript是如何在一個OOP模型中工作的,所以我爲了智慧來堆棧溢出。我應該如何在多個頁面上分享Javascript功能?

我的示例代碼:

(function($) { 
var $container = $('#container'); 
var $sidebar = $('#sidebar'); 


// Sidebar 
var currTab = $('#s1'); 

if(currTab) { 
    currTab.parent().parent().parent().addClass('selectedTop'); 
    currTab.find(".sideContent").delay(300).slideToggle("slow"); 
    currTab.addClass('selected'); 
} 

$('#sideTop').delegate('li', 'hover', function(event) { 
    var $this = $(this); 
    if (event.type == 'mouseenter') { 
     if(!$this.hasClass("selected")){ 
      $this.siblings(".selected").children(".sideContent").toggle(); 
      $this.siblings(".selected").removeClass('selected'); 
      $this.find(".sideContent").toggle().addClass('selected'); 
      $this.addClass('selected'); 
     } 
    } 
}); 


})(this.jQuery); 

此代碼緩存我的容器和工具條的div和控制選項卡在我的側邊欄徘徊。這些將在每個頁面上,所以我最初只是在每個頁面上包含了js文件,並且它照常運行。現在我已經得到了一個地步,我想自定義每個頁面與側邊欄默認打開的特定標籤(由currTab變量定義)。設置後,它將默認打開,並在鼠標離開側邊欄後保持打開狀態。

我還沒有找到一種方法來定製currTab每一頁上,而無需完全重新粘貼與側邊欄相關聯的所有代碼,使得任何更新腳本繁瑣。

我應該如何來處理這個?由於

+0

不要認爲這實際上是關於面向對象.. – gnur

+0

對不起,我不知道該怎麼對其進行分類。 –

回答

3

我很抱歉造成我缺乏瞭解混亂,但related questions的一個回答礦的方式,我不知道如何尋找:

他設置一個「類」第一,這可能包括作爲一個單獨的JS,然後用jQuery.ClassName(選項)傳達

我已經嘗試過了,它完美的作品,即分隔條件是一致的代碼,與將在每一頁上更改值。

(function($){ 
var undefined; 

$.ClassName = function(options){ 
    var self = this; 
    var cfg = $.extend(true, {}, this.defaults, options); 

    // ******************** 
    // start:private 
    // ******************** 
    function _init(){ 

    }; 

    // ******************** 
    // start:public 
    // ******************** 
    this.methodName = function(){ 

    }; 

    _init(); 
}; 

$.ClassName.prototype.defaults = {}; 
})(jQuery); 
1

帶班。只需將「currTab」等類添加到任何選項卡處於活動狀態。在您的JS中,檢查該選項卡上的該類,並在選項卡更改後,從舊的類中刪除該類並將其添加到新的類中。

+0

到目前爲止,這個和其他解決方案都會在這種情況下工作,我只是好奇,我可以如何使用JavaScript來實現這一點,以備將來使用。我很沮喪,因爲它看起來很簡單的動作,但我難住在JS –

+0

@Steve好吧,你需要*一些*標識特定頁面的方式,外部的Javascript保持不變。如何給每個頁面添加一個ID/class的「pagename1」,「pagename2」等,附加到'body'上。然後用你的jQuery抓住這個ID並用它來確定打開哪個標籤? –

+0

這種情況通常在服務器端處理。當您爲寫作/生成響應導航時,您可以決定將哪個頁面分配給該類。 –

0

添加一個類你想成爲默認激活的項目。使用JS來檢測這個類並作出相應的反應。

0

的一種方法是,以不同的方式申報currTab每個HTML頁面內,並刪除 「變種currTab = $( '#S1');」來自您的JavaScript文件。 JavaScript文件中currTab的其餘部分仍然可以引用它。

相關問題