簡體   English   中英

將jQuery函數傳遞給高階函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM