2013-03-22 68 views
2

我對整個Javascript的東西比較陌生,除了一些基本的jQuery東西。mootools獲取沒有ID的元素的位置

最近我接手了一個使用mootools的小型本地項目,但我被卡住了。

我有幾個頁面,有一個相對簡單的dom結構和存儲在數據庫中的內容。每個頁面上的第一個元素是div或具有固定寬度和高度的段落。

有所述元件的三種變型,他們每個人的不同的高度,這意味着我們具有的這些任一的每一頁

<div class="header1"><img ...></div> 
<p class="header2"><img ...></p> 
<p class="header3"><img ...></p> 

它們中的每之後是含有文本或圖像幾個段落上。

我的問題:我必須在頁面的第一個元素(div或p)和以下內容之間放置一個打印圖標的小div,但我不允許更改生成此頁面的任何代碼。

想法是使用mootools(無論如何加載)將div放置在第一個元素正下方的絕對位置。

這可以用jQuery很容易地完成,但我必須使用mootools加上元素沒有ID。

是否有任何簡單的方法來獲得位置或頁面加載,然後將位置(位置:絕對;)一個div在它下面?

到目前爲止,我都這樣了,(這是相當差的),它記錄了一類 「頭1」

window.addEvent('domready', function() { 
$$('.header1').each(function(element){ 
    console.log(element); 
}); 

})的中elemnent;

+0

爲什麼下面第一個元素?將其注入第二個元素中,並通過CSS和負邊距頂點進行偏移,這更容易,更高效。此外,將與調整大小,而不需要收集/重新定位絕對els。 – 2013-03-22 19:28:42

回答

1

element.getPosition()獲取一個元素的x和y位置,這應該允許您創建一個位於某處的新元素。根據您使用的版本,getPosition()可能位於MooTools More中。

在合適的位置添加一個新的元素到DOM中,而不會有棘手的定位可能會更容易,儘管這取決於您的DOM。


看你的反應從評論,如果你只是想比一個id別的東西到文檔中的單個元素匹配,document.getElement()是你所需要的,這將做大致相同$$(),但返回第一場比賽或null如果沒有匹配。

+0

感謝您的回答。 添加新元素會容易得多,但我不允許更改代碼。這也意味着,我將不得不在數據庫中更改大約3000個條目。 – 2013-03-22 13:49:41

+0

您可以使用mootools添加元素,而不是修改原始代碼庫。 – 2013-03-22 14:00:31

+0

...您在添加打印機圖標時也需要執行此操作,但是*您將其添加到文檔中時很重要。如果將它作爲標題的第一個子項添加,則可能不需要定位邏輯。 – akaIDIOT 2013-03-22 14:04:25

0

當然可以。問題是如果沒有ID,如何獲得你想要的元素。這和jQuery一樣困難,或者像jQuery一樣簡單。

看看Element.getPosition()的mootools文檔。

+0

在jQuery中,我可以這樣做: '$ (「.header1」)。position();' 哪個AFAIK在理論上提供了一個數組的時候在mootools中沒有這個等價物: '$$('。header1')。each(function(element)' – 2013-03-22 14:33:50

+2

'document.getElement('。header1')。getPosition()'就像jQuery一樣,獲得第一個匹配元素的位置,'.each'是不同的,真的。 – akaIDIOT 2013-03-22 14:41:19