2015-07-12 55 views
-4

我試圖在點擊時顯示ul。我可以用簡單的jQuery來完成,但我想使用oop方式。請糾正我,如果我錯了,謝謝!如何在jQuery中創建對象

HTML

<li class="dropdown"> 
    <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="toggleDropdown"> 
    <i class="icon-envelope"></i> 
    </a> 
    <ul style="display:none;" id="dropdown"> 
     <li><a href="#">No new messages are available</a></li> 
    </ul> 
</li> 

jQuery的

(function(){ 

var dropdowns = { 

    dropDownContainer: $('#toggleDropdown'), 

    dropDown : $('#dropdown'), 

    init:function(){ 
     $(dropDownContainer).click(function(){ 
      dropDown.show(200); 
     }) 
    } 

}; 

dropdowns.init(); 


})(); 
+0

你運行它,它不工作?無論如何,它似乎不是很適合我...也許看看[MDN - Object.prototype.constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /對象/構造函數)? – fuyushimoya

+0

目前它不工作 – Daniel

回答

0

的想法是沒有錯的,你的執行很差。你看,引用你的類的屬性或方法。您應該使用this在您的構造函數中創建即時引用。

下面是一個簡單的例子入手:

(function() { 
    var testOOP = { 
     container: $('a'), 
     init: function (e) { 
      this.container.click(function (e) { 
       e.preventDefault(); 
       alert(1) 
      }) 
     } 
    }; 
    testOOP.init(); 
})(); 

https://jsfiddle.net/jeatqLLe/1/

0

您不必在這一點上獲得下拉或dropDownContainer;在init函數中使用$('#dropdown')和$('#dropDownContainer')。

0

我認爲你幾乎是正確的。使用「this」按如下方式引用您的對象屬性。

(function(){ 

var dropdowns = { 

    dropDownContainer: $('#toggleDropdown'), 

    dropDown : $('#dropdown'), 

    init:function(){ 
     $(this.dropDownContainer).click(function(){ 
      this.dropDown.show(200); 
     }) 
    } 

}; 

dropdowns.init(); 


})();