1

我在页面中有一组下拉列表,记录列表中的每一行都有一个。我需要在触发每个更改事件的下拉列表行中更新 DIV 的内容。

像这样的东西:

<div class="price"></div>

<select id="plan[]" name="plan[]" class="sel">
  <option value="0" selected="selected">None</option>
  <option value="1">One</option>
  <option value="2">Two</option>
</select>   


$(function() {
    $('#plan').change(function(){
        $(this).prevAll('.price:first').html('foo bar');
    });
});

更改事件永远不会触发,我错过了什么?这是一个要测试的小提琴

4

3 回答 3

3

尝试使用带有 id 选择器的startswith 通配符。

现场演示

$(function() {
    $('[id^=plan]').change(function(){
        $('.price:first').html('foo bar');
    });
});

如果您有单个项目并且不需要通配符,您可以使用像这样的 id 选择器来完成。

现场演示

$(function () {
  $('[id="plan[]"]').change(function () {
    $(this).prev('.price').html('foo bar');
  });
});
于 2013-01-16T15:43:01.307 回答
0

您的元素的 idplan[]不是plan,因此事件回调未注册到任何对象。

于 2013-01-16T15:44:02.467 回答
0

idplan不是plan[]。 _ $("#plan[]")应该作为选择器工作,但对我来说似乎也是一个错误。您可能想将其更改为其他内容。这也意味着plan[]页面上有多个id元素,这是无效的。

于 2013-01-16T15:44:54.790 回答