我想在由函数确定的不同元素上使用.appendTo()
。例如,我希望能够做到:
$myElement.appendTo(function () {
if(Math.random() < 0.5) return $el1; else return $el2;
});
但是,jQuery文档没有涵盖作为
.appendTo()
的参数给出的函数的情况。jQuery团队不允许使用此功能是否有特定原因,并且周围是否有聪明的方法(也许通过重新定义
.appendTo()
函数)?许多其他jQuery函数允许将函数用作参数... 最佳答案
有很多方法可以使代码正常工作:
传递一个自调用函数作为参数(这实际上意味着您正在传递函数的返回值)
传递一个条件语句以返回所需的对象
在appendTo
调用之前过滤元素
等等
但是,如果您确实想使jquery appendTo
方法将函数作为参数,则应该自己扩展appendTo
方法:
(function($){
var originalAppendTo = $.fn.appendTo;
$.fn.appendTo = function(f){
el = typeof f === 'function'
? f.call(this)
: f;
return originalAppendTo.call(this,el);
}
})(jQuery);
然后可以将函数作为参数传递给
appendTo
:$myElement.appendTo(function () {
if(Math.random() < 0.5) return $el1; else return $el2;
});
这是一个工作示例:http://jsfiddle.net/gion_13/ZEnMQ/
关于jquery - 用作`.appendTo()`的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7808309/