2009-10-03 51 views
0

我的輸入元素後面跟着一個div。我想將div的寬度設置爲前一個輸入元素的寬度。是否可以將元素的寬度設置爲前一個元素的寬度?

<input type="text" class="input" size="100" name="data"/> 
<div class="inputHelp"> enter data above </div> 

<input type="text" class="input" size="80" name="moredata"/> 
<div class="inputHelp"> enter more data above </div> 

在每個實例中,.inputHelp類的寬度應與它之前的輸入元素的寬度相同。

使用下一個選擇器,我能夠獲取輸入元素的寬度,後跟inputHelp div。 但是,當試圖設置下面的inputHelp div的寬度時,它會在頁面上設置所有inputHelp div的寬度。我怎樣才能限制它只設置下一個inputHelp的寬度,然後迭代頁面上的所有其他input + inputHelp組合?

這裏是我當前的jQuery代碼:

$('.input + .inputHelp').width($('.inputHelp').prev('.input').width()); 

回答

3
$('.input + .inputHelp').each(function() { 
    $(this).width($(this).prev('.input').width(); 
}); 

到解決方案的關鍵是使用$(this),而不是$('.inputHelp')。後者抓取全局的.inputHelps,而不是您正在循環的特定的.inputHelps。

0

我在想,是否需要每個解決方案 - 我只是要啓動我的開發環境並測試 - 更多的只是我的一個好奇心,因爲您已經標記了Stuart B的答案正確(它是)。

將以下代碼不等於:

$('.input + .inputHelp').width($(this).prev('.input').width()); 

我會評論更新這個時候我已經修修補補,而是作爲一個人學習jQuery的myselft,我很願意聽到的話,他們是等價如果不是原因。

感謝, 特里

+2

這是行不通的。它的值取決於上下文,它只能在閉包中操作(如每個(fn))... – James 2009-10-03 18:41:05

相關問題