我有一个表单选择元素,当选择某个值时,将切换页面上的其他两个元素(dt / dd对)。
事件被正确触发,但我无法切换元素 - 注意我使用的是类选择器,因为页面上这些元素“sets”的数量是可变的。这是我的代码:
$(".lender_id").change(function () {
if($(this).val()=='45')
{
$(this).next(".lender_other1").toggle();
$(this).next(".lender_other2").toggle();
}
});
lender_id是我的选择元素类,html代码如下(如上所述,此元素集可以在页面上多次出现):
<dt>Lender</dt>
<dd><select name="lender_id[1]" class="lender_id">
<option value="1">Value</option>
<option value="45">Special Value</option>
</select></dd>
<dt class="lender_other1" style="display:none;">Lender Name</dt>
<dd class="lender_other2" style="display:none;">
<input type="text" name="lender_other[1]" value="" /></dd>
<dt>Lender</dt>
<dd><select name="lender_id[2]" class="lender_id">
<option value="1">Value</option>
<option value="45">Special Value</option>
</select></dd>
<dt class="lender_other1" style="display:none;">Lender Name</dt>
<dd class="lender_other2" style="display:none;">
<input type="text" name="lender_other[2]" value="" /></dd>
etc...
答案 0 :(得分:2)
next()
没有按照您的想法行事。试试$(this).parent('dl').find('.lender_other1')
。或者,你知道,也许只是$('.lender_other1')
。
答案 1 :(得分:2)
这是你想要的:
$(".lender_id").change(function() {
if ($(this).val() == '45') {
$(this).parent().nextAll(".lender_other1:first, .lender_other2:first").toggle();
};
});
修改
我将类选择器组合在一起以提高效率。
答案 2 :(得分:1)
.next()只返回下一个匹配,所以我认为你应该使用.nextAll()
答案 3 :(得分:0)
使用slice(start, end)方法。根据john resig的视频,这是正确的方法。