使用jQuery $ .proxy和$ .filter传递“this”作为参考

时间:2014-04-09 03:09:56

标签: javascript jquery

如何访问this,一个引用父对象,另一个引用在jQuery过滤器函数中筛选的$('。report')DOM对象?

在以下情况中,this覆盖DOM对象$.proxythis现在引用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));
    }
}

1 个答案:

答案 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