调用$.each()函数时上下文发生变化
Context changes on the call of $.each() function
我使用Jquery$.each来获取属于特定类的所有元素,我想一个接一个地对每个元素调用一个函数。为了实现这一点,我调用了以下函数:
var elements = $('.colorpickerHolder');
elements.each(self.ApplyColorPicker());
我可以在运行时上看到元素有三个元素,这是正确的。现在,当我呼唤自我的时候。ApplyColorPicker,我用$(this)引用每个当前元素。令人惊讶的是,$(this)不是当前元素。
我的代码在敲除框架下工作,两段代码都在viewModel下。并且在ApplyColorPicker$(this)内部成为我的viewModel。我不知道为什么。有什么理由吗?
以下是我的ApplyColorPicker代码,仅用于评论:
self.ApplyColorPicker = function () {
$(this).ColorPicker({
color: '#0000ff',
onShow: function (colpkr) {
$(colpkr).fadeIn(500);
return false;
},
onHide: function (colpkr) {
$(colpkr).fadeOut(500);
return false;
},
onChange: function (hsb, hex, rgb) {
$(this).css('backgroundColor', '#' + hex);
}
});
};
将对函数本身的引用传递给each
,而不是函数的求值结果。换句话说,使用self.ApplyColorPicker
而不是self.ApplyColorPicker()
。
var elements = $('.colorpickerHolder');
elements.each(self.ApplyColorPicker);
看起来您正在.each
语句中调用ApplyColorPickers
,这意味着它只被调用一次,并且将该函数的结果传递到.each
,而不是对该函数的引用。这应该起作用:
elements.each(self.ApplyColorPicker); //Without the () after ApplyColorPicker
您需要做:
elements.each(self.ApplyColorPicker);
问题是self.ApplyColorPicker()
实际上调用了该函数。您需要传递给$.each
的是对该函数的引用。
相关文章:
- 将函数的上下文应用于javascript变量
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 单击页面上的链接后高度发生变化
- 使用JQuery的动态上下文菜单
- 如何访问UIWebView'的子窗口上下文
- React redux初始化功能,无论状态变化如何
- 角度ng变化或ng点击选择can'不起作用
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- JQuery在单击正文时隐藏上下文菜单
- JQuery上下文菜单显示/隐藏问题
- JS幻灯片与CSS背景颜色变化
- 如何从HTTP上下文对象中获取Post数据
- HTML字符串作为上下文
- 为什么我的上下文选择器和.buttonset()在ie中花费了这么长时间
- 重新加载页面时Javascript变量发生变化
- 如何获得Bootstrap Datepicker的年和月,因为它在变化
- 丢失对象“;这个“;方法中的上下文
- 调用$.each()函数时上下文发生变化
- 为什么这个JS代码段中的上下文会发生变化
- D3,当上下文发生变化时,第二焦点不会移动