"这个“;在每个范围之外(JQuery)
"This" outside of each scope (JQuery)
我正试图在这个实例中去掉ref的那个讨厌的变量声明,我相信有一种方法可以摆脱每个范围来获得on调用的"this"。我只是不知道怎么做。
$(document).on('click', '.item', function(){
var ref = $(this).attr('data-id');
$.each(t, function(){
if(this.id == ref){
//action
return false;
}
});
}
这并不是真正的生死攸关,我只是想清理代码。
有一种方法可以做到这一点:使用自动传递给事件处理程序的event
引用。
$(document).on('click', '.item', function(e) {
$.each(t, function(){
if (this.id == $(e.target).attr('data-id')) {
//action
return false;
}
});
}
但是,这并不能为您带来任何好处,除了在代码运行时有更多的时间做其他事情。)
实际上,您可以做一些事情。您可以将函数绑定到上下文。由于您已经在使用jQuery,因此可以使用jQuery.proxy,它接受参数函数和上下文,将该函数绑定到该上下文并返回一个新函数。
读一读,你会稍微理解它:http://www.robertsosinski.com/2009/04/28/binding-scope-in-javascript/
然后看看这个:http://api.jquery.com/jQuery.proxy/
希望这能有所帮助…:)
不确定你的意图是什么,但如果只是引用这个原始元素:
$(document).on('click', '.item', function(){
var that = this;
$.each(function(){
// use 'that' however you'd like
if ($(that).data().id == 'whatever') ...
}
});
您不能在javascript中"离开"作用域,只能引用父作用域中的声明。
相关文章:
- jquery日期选择器年份范围默认值
- JQuery 范围滑块步进更改问题
- Jquery范围滑块如何创建自己的序列
- 如何使多个标签显示在JQuery范围滑块中
- Jquery:范围滑块:如何获取设置的范围值
- 带有两个处理程序的 jQuery 范围滑块.读取最小值和最大值
- JQuery 范围输入侦听器
- Javascript/jQuery 范围和上下文问题,当试图操作对象的“引用”时
- 带工具提示的Jquery范围滑块
- Javascript/JQuery范围问题
- 使用localStorage存储jQuery范围滑块的最大值和最小值
- 下拉jquery范围值
- Chrome开发者控制台访问jQuery范围
- 访问jQuery范围内的函数
- 如何在jquery范围滑块中使用mouseup事件
- 更改JQuery范围滑块工具提示上的滑动文本
- jQuery 范围滑块在 IE8 中给出“无效参数”
- 具有多个函数的 jQuery 范围
- 如何修复这个jQuery范围错误
- 如何知道DOM元素是否在jquery范围内