2013-10-30 106 views
2

我必須讓一個div出現在輸入框旁邊,但是這個div直接位於body下方,而不像在許多div下的輸入框。setXY節點沒有設置xy位置的功能爲0,0

所以這個場景是我有很多輸入,我想在這個div內容中顯示一些錯誤。我檢查模糊輸入的內容,然後發生模糊發生的任何輸入,我將此輸入框的位置,div的setXY位置取消隱藏。

代碼:

var input=Y.one("#input1"); 
var errorDiv=Y.one('#errorDiv'); 

input.on('blur',function(e){ 
    var xy=input.getXY(); 
    errorDiv.setXY([xy[0]+30,xy[1]]); 
    errorDiv.removeClass('hide'); 
}); 

我現在面臨的問題是,setXY不工作的第一次。只有在我第二次改變我的注意力之後,setXY纔會放置正確的位置。 在調試過程中,我發現在這個語句​​3210之後,錯誤div的xy位置仍然是0,0。

有人可以告訴我我在這裏做錯了什麼嗎?

+0

我希望我不是唯一認爲標題說seXY功能.... – Huangism

+0

你不是唯一的。 –

回答

1

我相信你需要交換處理errorDiv外觀的順序。因此,不要設置一個位置然後取消隱藏,嘗試取消隱藏div,然後改變其位置。

簡單地改變這樣的:

errorDiv.setXY([xy[0]+30,xy[1]]); 
    errorDiv.removeClass('hide'); 

這一點。

errorDiv.removeClass('hide'); 
    errorDiv.setXY([xy[0]+30,xy[1]]); 

我創建了一個demo展示這種變化。

我以前也遇到過這個問題,我也不完全知道它爲什麼會發生,因爲我沒有鑽研過深入它,但我的理論是,它是與需要的元素首先可以看到適當的座標計算。希望這可以幫助。