我想在由函数确定的不同元素上使用.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/

10-09 20:53