2011-07-12 166 views
1

我想創建一個下拉菜單,我需要檢測子菜單的corect位置。這是我用jQuery縮進它:下拉菜單與jquery定位

function changeSubcat(catid){ 
    var position = $('#menuparent_'+catid).position(); 
    position.left = position.left - 180; 
    $('#menu_'+catid).css("left", position.left); 
} 

真正的問題是,它只是爲大小的窗口我的工作,obviosly,所以我需要去優化它在其他方面的工作。首先,我想我應該使用另一種方法比position(),但我還沒有找到一個更好的。對不起,不提供html代碼,但它有點毛茸茸的。

+0

@decebakl,請修正問題中代碼的格式。閱讀它是一種痛苦。謝謝。 – spliter

+0

並且如果可能的話,添加一個HTML/CSS代碼片段 – spliter

+0

什麼應該是'corret position'? –

回答

2

我不明白你爲什麼用左右邊距來同時定位元素。僅使用

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,因爲它們已經是整數。

+0

10倍,膠印解決方案爲我工作。 – decebal

+0

你對解析思想是正確的:d – decebal

0

據我所見,你只是想要放置掉落的元素。爲什麼你使用JS呢?不會the pure CSS solution解決你的問題?

+0

這是太多的信息無法修改試用這個解決方案,所以我選擇了最適合我的最方便的解決方案。 – decebal

+0

稍後需要維護代碼時告訴我這一點;) – spliter