来自jquery网站:
调用jQuery选择的方法位于$ .fn命名空间中,并自动接收并返回选择作为' this'。
但是如果我使用 $(' selector')。clone(),那么返回的对象是克隆的而不是原始的?一般来说,如何知道jquery方法的返回对象是什么?
答案 0 :(得分:1)
对于clone()
,您引用的文档看起来不对。
The end of the clone()
implementation清楚地表明它是返回的克隆集。
jQuery.extend({
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
var i, l, srcElements, destElements,
clone = elem.cloneNode( true ),
// --- Stuff removed for brevity ---
// Return the cloned set
return clone;
}
答案 1 :(得分:1)
这里的想法是你可以链接jquery方法。有些方法可能会改变选择而有些则不会,但是它们必须返回集合,因此它们可以被链接。例如
$('.pages').filter('.inactive').hide().end().filter('.active').show()
在这种情况下,方法hide
将接收选择为this
并将执行它应该执行的操作并返回this
不变。
但相反的filter
方法会获得完整选择,但会更改它并将更改后的选择作为this
返回。
在这里注意到的一件非常酷的事情是,您实际上可以使用end
来获取以前的选择来完成您的工作。
答案 2 :(得分:0)
如果准确地解释OP的问题,需要确定哪个object
返回?是original
还是clone
?
对于element
或selector
克隆,clone
对象似乎没有selector
属性object
返回> 0
,ieg ,试试
$(function () {
var original = $("div");
var clone = $("div").clone(true, true);
console.log(original.selector.length > 0, clone.selector.length > 0);
// `true` , `false`
$.fn.isClone = function () {
return !$(this).selector.length > 0
};
console.log($(clone).isClone(), $(original).isClone());
// `true` , `false`
});