2012-05-25 35 views
2

我使用jQuery ui位置插件來設置一些幫助框旁邊的他們以前的元素,它的作品,如果我設置前面的框ID,但沒有,如果我嘗試使其更具活力,爲此,我需要它是動態的。讓我們來看看代碼:在jQuery ui位置插件中將「of:」屬性設置爲之前的元素

CSS

.helpBox { 
    width: 150px; 
    height: 75px; 
    position: absolute;   
    display: block; 
    right: 0; 
    bottom: 0; 
    background-color: #bcd5e6; 
    text-align: center; 
} 

HTML

<asp:TextBox ID="txtInformation" runat="server" TextMode="MultiLine" Rows="5" CssClass="required" ClientIDMode="Static"></asp:TextBox> 
<div class="helpBox">This is a helping box.</div> 

很抱歉的asp.net的代碼,它只是一個文本框。

JS

$(".helpBox").position({ 
    of: $("#txtInformation"), 
    my: "left center", 
    at: "right center", 
    offset: "10 0" 
}); 

而且這樣的作品,但如果我嘗試使用這個,所以我可以重複使用它,並使它與所有幫助框工作,它並不:

$(".helpBox").position({ 
    of: $(this).prev(), 
    my: "left center", 
    at: "right center", 
    offset: "10 0" 
}); 

現在我不知道如何使它工作。該財產應該處理,但不知道它不是。誰能告訴我我做錯了什麼?

謝謝。

回答

2

您正在傳遞一個對象到.position函數。在傳遞給函數之前,該對象正在被定義,因此$(this).prev()將在調用該方法的代碼的上下文中進行評估。 this不是,必要的,請參閱您的.helpBox在這裏。

然而,如果你遍歷你的幫助盒用$.each,然後this在每次迭代將涉及到實際的盒子:

$('.helpBox').each(function() { 
    $(this).position({ 
    of: $(this).prev(), 
    my: "left center", 
    at: "right center", 
    offset: "10 0" 
    }); 
}); 

Demo

+0

我只是試圖做這樣的事情,但裏面財產。無論如何,它不適合我,它是否適合你? –

+0

啊,對不起,'position'是一個jQuery UI函數,而不是標準jQuery庫的一部分,所以它的行爲並不像我預期的那樣,而且看起來你不能像那樣執行基於集合的操作。你必須迭代集合,看看我的更新。 –

+0

謝謝!現在,它的工作;) –

相關問題