我正在尝试创建一个下拉菜单,我需要检测子菜单的正确位置。这就是我用 jquery 缩进它的方式:
function changeSubcat(catid){
var position = $('#menuparent_'+catid).position();
position.left = position.left - 180;
$('#menu_'+catid).css("left", position.left);
}
真正的问题是它只适用于我工作过的大小的窗口,很明显,所以我需要优化它以在其他维度上工作。首先我想我应该使用另一种方法而不是 position()
,但我还没有找到更好的方法。很抱歉没有提供 html 代码,但它有点毛茸茸。
最佳答案
不明白为什么要同时使用margin left和left来定位元素。仅使用
function changeSubcat(catid) {
var position = $('#menuparent_'+catid).position();
// maybe add a little something to position.top to make the menus not overlap
$('#menu_'+catid).position(position);
}
应该可以。有时我发现 position()
不起作用,您也可以尝试 offset()
。在极少数情况下,我也遇到了 position()
和 offset()
的问题,在这种情况下,您可以使用 $('#menuparent_'+catid )[0].offsetTop
和 $('#menuparent_'+catid)[0].offsetLeft
获取和设置位置。
编辑:顺便说一句,您不必解析 position.left 或 right,因为它们已经是整数。
关于jquery - 使用jquery定位下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660497/