我想在函数确定的不同元素上使用.appendTo()
。例如,我希望能够:
$myElement.appendTo(function () {
if(Math.random() < 0.5) return $el1; else return $el2;
});
但是,jQuery文档没有涵盖作为.appendTo()
的参数给出的函数的情况。
是否有一个特定的原因导致jQuery团队不允许这样的功能,并且有一个聪明的方法(可能通过重新定义.appendTo()
功能)?许多其他jQuery函数允许函数作为参数......
答案 0 :(得分:1)
一般情况下,您是否过滤/选择之前的元素?
答案 1 :(得分:1)
您应该向.appendTo
提供功能结果(或its immediate invocation),而不是功能本身,例如:
$myElement.appendTo(
(function() {
if(Math.random() < 0.5) return $el1; else return $el2;
})()
);
答案 2 :(得分:1)
filter
方法需要一个函数。做这样的事情:
$("#someselector").filter(function () {
return index == 1 || $(this).attr("id") == "fourth"; // or whatever
}).append($myElelment);
答案 3 :(得分:1)
有很多方法可以让你的代码工作:
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;
});
以下是一个有效的例子:
答案 4 :(得分:0)
您可以使用$ .append将此代码改为:
function append($myElement) {
if(Math.random() < 0.5) return $el1.append($myElement); else return $el2.append($myElemen);
}
我不确定为什么jquery不允许你想要的功能。