如何访问this
,一个引用父对象,另一个引用在jQuery过滤器函数中筛选的$('。report')DOM对象?
在以下情况中,this
覆盖DOM对象$.proxy
,this
现在引用var parentObj
。处理这种情况的最佳方法是什么?
var parentObj =
{
getId: , //some function that returns the id by value
render: function(){
$('.report').filter($.proxy(function(index) {
return $(this).data('id') == this.getId($(this).data('value'))
}, this));
}
}
答案 0 :(得分:1)
由于您已使用$.proxy()
将自定义执行上下文传递给回调,因此回调内的this
不会引用当前元素 - 它引用parentObj
对象。< / p>
所以要引用当前的report
元素,请使用回调函数的第二个参数,该函数是当前被过滤的元素
var parentObj = {
getId: , //some function that returns the id by value
render: function () {
$('.report').filter($.proxy(function (index, el) {
//use el here to refer tot the current element
return $(el).data('id') == this.getId($(el).data('value'))
}, this));
}
}
演示:Fiddle