我有一个简单的js类,我试图绑定'点击'关于函数的对象的事件。我正在迭代一系列元素:
<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 :(得分: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]);
});
};