2

I have a form select element that, when a certain value is selected, will toggle two other elements on the page (a dt / dd pair).

该事件被正确触发,但我无法切换元素 - 请注意我正在使用类选择器,因为页面上这些元素“集”的数量是可变的。这是我的代码:

$(".lender_id").change(function () {
if($(this).val()=='45')
   {
   $(this).next(".lender_other1").toggle();
   $(this).next(".lender_other2").toggle();
   }
});

lender_id 是我的select元素类,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...
4

4 回答 4

2

next()不做你认为它做的事。试试$(this).parent('dl').find('.lender_other1')。或者,你知道,也许只是$('.lender_other1')

于 2009-06-19T13:29:33.960 回答
2

这是你想要的:

$(".lender_id").change(function() {
    if ($(this).val() == '45') {
        $(this).parent().nextAll(".lender_other1:first, .lender_other2:first").toggle();
    };
});

编辑

我将类选择器组合在一起以提高效率。

于 2009-06-19T14:53:01.093 回答
1

.next() 只返回下一场比赛,所以我认为你应该使用 .nextAll()

http://docs.jquery.com/Traversing/nextAll#expr

于 2009-06-19T13:56:06.573 回答
0

使用slice(start, end)方法。根据 john resig 的视频,这是正确的方法。

于 2009-06-19T14:50:13.190 回答