[英]Passing jQuery function to higher-order function
我正在嘗試使用Javascript中的高階函數,並且編寫了如下內容:
function hof (setter) {
setter("not test");
}
function hof2 (setter) {
setter.call(window.jQuery, "not test 2");
}
var span = $("#myTest").text;
hof(span);
hof2(span);
這是jsFiddle版本: http : //jsfiddle.net/6mcYt/
但是,這兩個函數都會引發錯誤。 將jQuery setter函數傳遞給高階函數的最佳方法是什么?
text
函數實際上屬於jQuery.fn
(也已分配給jQuery構造函數的prototype屬性)。 如果將其作為第一個參數傳遞給setter.call
,它將停止引發錯誤。 但是如果期望的結果是更改#myTest
上的文本,它將無法正常工作,因為您將不再有對該元素的引用(將其保留在$("#myTest")
,該$("#myTest")
是jQuery的一個實例構造函數)。
抱歉,如果我無法提供實際的解決方案,則不確定您要在此完成什么。
我認為您想做的事情(我不是100%肯定)應該是這樣的。
function hof ($el) {
$.fn.text.call($el, 'test1')
}
var span = $("#myTest");
hof(span);
這是小提琴http://jsfiddle.net/6mcYt/2/
另一個選擇是先將文本方法與上下文綁定。
function hof2 (setter) {
setter("not test 2");
}
var spanFn = $.proxy($.fn.text, $("#myTest"));
hof2(spanFn);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.