据我所知,回调是在执行父方法后执行的函数。但是下面代码中的方法attr()似乎并没有首先被执行,因为它应该是它的名字' callback'。你能帮我理解这段代码吗?
$("button").click(function(){
$("#w3s").attr("href", function(i, origValue){
return origValue + "/jquery";
});
});
似乎"功能(i,origValue)"在" attr()"。
之前执行答案 0 :(得分:2)
“回调”不一定在传递给它的方法之后执行。只要被调用的方法想要执行它就会执行它。
在这种情况下,.attr()
的实现会在运行时调用回调。它遍历jQuery对象的元素,并为每个元素调用一次回调。最后一次回调调用将在调用.attr()
之前完成。
在原始被调用方法完成后调用回调的概念可能源于回调提供了一种处理异步情况的方法。但是,这与回调的概念没有任何关系;相反,它是利用回调在语言中可用的事实的一种方式。
在这种情况下,由于没有异步搞笑业务,为什么API会涉及回调? .attr()
中回调的要点是提供一种在每个元素的基础上做出额外决策或进行额外计算的方法。使用回调,您自己的代码(作为回调传递的函数)可以检查每个原始属性值并解释它,但是您要这样做。代码可以根据您自己的标准决定在更新其他元素时单独保留一些元素。您仍然可以利用为您执行迭代的jQuery代码,并且您可以专注于检查和更新属性值的逻辑。