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

mxc*_*xcl 0 jquery

我有:

$('p').fadeOut(300, function() { $(this).remove(); });
Run Code Online (Sandbox Code Playgroud)

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

$('p').fadeOut(300, $.fn.remove);
$('p').fadeOut(300, $().remove);
var p = $('p'); p.fadeOut(300, p.remove);
Run Code Online (Sandbox Code Playgroud)

Esa*_*ija 5

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

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

$('p').fadeOut(300, $().remove);
Run Code Online (Sandbox Code Playgroud)

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

p.fadeOut(300, p.remove);
Run Code Online (Sandbox Code Playgroud)

传递没有上下文.$.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));
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/gtv85/