我的输入元素后跟一个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() );
答案 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,我很乐意听到它们是否相同,如果不是为什么。
谢谢, 特里