Jquery如何在迭代通过.each到类方法时绑定元素

时间:2014-03-27 17:47:39

标签: javascript jquery

我有一个简单的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();
  });  

1 个答案:

答案 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]);
    });
};