是否可以将元素的宽度设置为前一个元素的宽度?

时间:2009-10-03 17:46:23

标签: javascript jquery

我的输入元素后跟一个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应该具有与之前的输入元素相同的宽度。

使用 next 选择器,我能够获取输入元素的宽度,然后输入inputHelp div。 但是,在尝试设置以下inputHelp div的宽度时,它会在页面上设置所有inputHelp div的宽度。如何将其限制为仅设置下一个inputHelp的宽度,然后遍历页面上的所有其他input + inputHelp组合?

这是我当前的JQuery代码:

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

2 个答案:

答案 0 :(得分:3)

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

解决方案的关键是使用$(this),而不是$('.inputHelp')。后者全局捕获所有.inputHelps,而不是您正在循环的特定.In。承诺。

答案 1 :(得分:0)

我想知道,是否需要.each解决方案 - 我只是打开我的开发环境并进行测试 - 更多只是我的好奇,因为你已经标记了Stuart B的答案是正确的(它是)。 / p>

以下内容不相同:

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

当我修改时,我会用评论更新这个,但作为有人学习jQuery myselft,我很乐意听到它们是否相同,如果不是为什么。

谢谢, 特里