为什么我必须为这个jQuery链使用匿名包装器?

时间:2013-02-25 17:00:42

标签: jquery

我有:

$('p').fadeOut(300, function() { $(this).remove(); });

但为什么我不能做这些呢?:

$('p').fadeOut(300, $.fn.remove);
$('p').fadeOut(300, $().remove);
var p = $('p'); p.fadeOut(300, p.remove);

1 个答案:

答案 0 :(得分:5)

$('p').fadeOut(300, $.fn.remove);

传递

$.fn.remove没有上下文。 $.proxy($.fn.remove, $("p"))可以在这里工作

$('p').fadeOut(300, $().remove);

没有上下文传递。 $.proxy($().remove, $("p"))可以在这里工作

p.fadeOut(300, p.remove);

没有上下文传递。 $.proxy(p.remove, p)可以在这里工作

修复代码:

$('p').fadeOut(300, $.proxy($.fn.remove, $("p")));
$('p').fadeOut(300, $.proxy($().remove, $("p")));
var p = $('p'); p.fadeOut(300, $.proxy(p.remove, p));

http://jsfiddle.net/gtv85/