我试图在jQuery中链接一个匿名函数,但它不起作用.我收到错误“错误:
XML过滤器应用于非
XML值…”.什么是正确的语法或是否有一个我可以使用的效果函数,它不会在视觉上做任何事情,包裹我的功能?
我的例子:$item.appendTo($list).(function(){…..}());
解决方法
链接通过调用给定的可链接函数返回原始jQuery对象来工作.假设,要链接您的匿名函数,您必须“返回”原始jQuery对象.
但是,您的函数必须可以从jQuery对象的上下文中调用.例如,存在功能
$item.appendTo
但是,jQuery对象上没有可通过以下方式访问的函数:
$item.(function(){ })
可以这样想.我们假设您有以下对象:
var obj = { foo: function(){ console.log(1); } };
‘foo’声明可作为obj上的属性/声明访问.但究竟,您使用匿名函数引用的声明是什么?
obj.(function(){ })
您可以为匿名函数提供jQuery对象的执行上下文的唯一方法是对其执行“调用”
(function(){ }).call($item,args);
如果你想要链接这个,你理论上可以这样做:
(function(){ return this; }).call($item,args).appendTo($other);
但我不确定你会得到什么.你最好的选择就是:
$item.appendTo($list); (function($obj){ })($item);
或者,如果您从选择器开始:
var $item = $('#someID').appendTo($list); (function($obj){ })($item);
虽然,此时匿名函数不那么有用,所以我只想:
var someFunc = function($obj){ }; $item.appendTo($list); someFunc($item);