我想在jQuery中鏈接一個匿名函數,但它不工作。我收到錯誤「錯誤:XML過濾器應用於非XML值...」。什麼是正確的語法,或者是否有一個效果函數,我可以使用它不會在視覺上做任何事情,並且包裝我的函數?如何鏈接jQuery中的匿名函數?
我的例子:$item.appendTo($list).(function() {.....}());
我想在jQuery中鏈接一個匿名函數,但它不工作。我收到錯誤「錯誤:XML過濾器應用於非XML值...」。什麼是正確的語法,或者是否有一個效果函數,我可以使用它不會在視覺上做任何事情,並且包裝我的函數?如何鏈接jQuery中的匿名函數?
我的例子:$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);
類似於:$ item.appendTo($ list)。(function($){/ * do your stuff */return $;})(jQuery); – rcravens 2010-12-08 22:35:12
它不應該是:
$item.appendTo($list).(function() {.....})();
完全忘了提回$;
可以使用.each
方法
$item.appendTo($list).each(function() {.....});
另外,你可以用你自己的函數來擴展jquery對象(jQuery.fn.extend()
)。
$.fn.extend({
myOwnFunc: function(){
/*do whatever*/
return this; // to allow for further chaining.
}
});
,現在你可以調用$item.appendTo($list).myOwnFunc()
能不能細說,你要完成什麼?這對我來說毫無意義。你是否試圖調用一個函數使得`this`設置爲`$ item`? – meagar 2010-12-08 22:33:23