2014-03-27 45 views
0

我有一個簡單的js類,我試圖綁定對象上的'點擊'事件到函數。我通過元素的列表迭代:Jquery如何綁定元素迭代通過每個類方法

<ul id="cp"> 
<li><button id="panel_button_light">Turn Light On</button></li>  
<li> 
    <div class="arrow-up" id="panel_button_temp_up"></div> 
    <div class="arrow-down" id="panel_button_temp_down"></div> 
</li> 
</ul> 

我不知道我需要在代碼通過迭代的元素,這樣我可以點擊他們的時候調用類的方法時,下面進入。

這是我使用的js代碼:

<script type="text/javascript"> 
    var CP = function(widget){ 
    this.widget_name = widget; 
    var self = this; 
    this.init = function(){  
     $('#'+this.widget_name).children('li').children('*[id*=panel_]').each(function(self){  
     //I need function here to bind the click event to the class CP 
     $("#" + this.id).on('click', $.proxy(this.id, this)); 
    }); 
     } 
    }; 
    CP.prototype.panel_button_temp_up= function(){  

    }; 
    CP.prototype.panel_button_temp_down= function(){  

    }; 
    CP.prototype.panel_button_light = function(){  

    }; 
    $(document).ready(function(){ 
    var c = new CP("cp"); 
    c.init(); 
    }); 
+0

是[這](http://jsfiddle.net/Gr55Y/)你想要什麼? – DontVoteMeDown

+0

*「我需要函數來將click事件綁定到類CP」*但是哪個函數? –

+0

@FelixKling,我認爲問題是要綁定與他們的功能,可以用jQuery輕鬆完成的div。在再次閱讀這個問題後,我不確定需要/詢問什麼。 – Siva

回答

0

this.id是一個字符串,所以$.proxy(this.id, this)沒有意義。如果要訪問cp實例上的同名屬性,則必須執行類似instance[this.id]的操作。

例如:

var self = this; 
this.init = function() {  
    $('#'+this.widget_name).find('[id^=panel_]').each(function() {  
     $(this).on('click', self[this.id]); 
    }); 
}; 
+0

謝謝。那完美的工作。我改變的一件事是點擊「$(」#「+ this.id).on('click',$ .proxy(self [this.id],self));」因爲「panel_button_light」上的範圍被設置爲「button」 – user1647708

+0

我不知道你想要哪個對象'this'來引用。不過,你仍然可以使用'$(this)',如果你已經有了一個引用,就不需要再次搜索這個元素。 –