Javascript Jquery定位方法
根据Jquery API文档: .position()返回:对象 说明:获取匹配元素集中第一个元素相对于偏移父元素的当前坐标 此方法不接受任何参数。引用 但我发现在某个地方用这个:Javascript Jquery定位方法,javascript,jquery,Javascript,Jquery,根据Jquery API文档: .position()返回:对象 说明:获取匹配元素集中第一个元素相对于偏移父元素的当前坐标 此方法不接受任何参数。引用 但我发现在某个地方用这个: $("#position1").position({ my: "center", at: "center", of: "#targetElement" }); 一个对象已被传递到position方法。这不符合API文档吗?上面传递给对象的属性似乎有一些特殊的含义。这些属性说明了什么。它们是做什么的?我是
$("#position1").position({
my: "center",
at: "center",
of: "#targetElement"
});
一个对象已被传递到position方法。这不符合API文档吗?上面传递给对象的属性似乎有一些特殊的含义。这些属性说明了什么。它们是做什么的?我是jquery的完全初学者。所以可能是我错了。让我们来看看codez!快速浏览jQuery 1.9.1源代码可以发现:
position: function() {
if ( !this[ 0 ] ) {
return;
}
var offsetParent, offset,
parentOffset = { top: 0, left: 0 },
elem = this[ 0 ];
// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
if ( jQuery.css( elem, "position" ) === "fixed" ) {
// we assume that getBoundingClientRect is available when computed position is fixed
offset = elem.getBoundingClientRect();
} else {
// Get *real* offsetParent
offsetParent = this.offsetParent();
// Get correct offsets
offset = this.offset();
if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
parentOffset = offsetParent.offset();
}
// Add offsetParent borders
parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
}
// Subtract parent offsets and element margins
// note: when an element has margin: auto the offsetLeft and marginLeft
// are the same in Safari causing offset.left to incorrectly be 0
return {
top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
};
},
未读取参数,未使用参数。无论您在哪里看到该代码,它都不是jQuery核心。很可能是因为原始作者使用了jQuery UI,它扩展了该方法。请查看- 该功能在jqueryUI位置实用程序中,而不是在核心jQuery中。此变体是的一部分。它为您提供了一种以某种方式相对于另一个元素(或鼠标光标)放置元素的简单方法 您完全正确,原来的
position()
方法不接受参数。。。但是:
该插件扩展了jQuery的内置.position()方法。如果未加载jQuery UI,调用.position()方法可能不会直接失败,因为该方法仍然存在。但是,预期的行为不会发生
根据
“#targetElement”
谢谢你提供的信息。你能帮我简单地理解一下这些物体的属性吗。