如何选择正确的子元素?

时间:2011-09-19 06:05:38

标签: jquery jquery-selectors

我有下一个HTML代码:

<fieldset id="q1">
  <legend>Quest 1</legend>
  <div class="a1">
    <label for="q2a1">Some text 1</label>
    <select id="q2a1" name="q2a1">
      <option value="0">0</option>
      <option value="1">1</option>
      <option value="2">2</option>
    </select>
  </div>
  <div class="a2">
    <select id="q2a2" name="q2a2">
      <option value="0">0</option>
      <option value="1">1</option>
      <option value="2">2</option>
    </select>
    <label for="q2a2">Some text 2</label>
  </div>
</fieldset>

基本思想:两个选择器的总和必须等于2.

示例:如果我在第一个选择器编号2中选择,则必须使用第二个选择器 只有0。如果我在第一个选择器编号1中选择,则第二个选择器必须 必须只有1.反之亦然。 如您所见,label之前和之后可以找到标记select。 我开始编写代码,但它坚持选择一个必要的孩子。 也可能无法使用id的元素,因为形式非常大。

JS:

$('select').change(function(event) {
  var c;
  c = 3 - $(this).val();
  options = '';
  for (var i = 0; i <= c; i++) {
    options += '<option value="' + i + '">' + i + '</option>';
  }
        alert($(this).parent().parent().html());
});

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:2)

您不必查找元素,只需使用.val(value),jQuery就可以为您付出艰苦的努力:

$('select').bind('change keyup click', function(){
   var $this = $(this);
   var $other = $this.closest('fieldset').find('select').not(this);
   var selectedValue = parseInt($this.val(), 10);
   $other.val(2 - selectedValue);
});

我添加了keyupclick个事件,因此它可以很好地与鼠标和键盘配合使用。

工作示例:http://jsfiddle.net/7TX86/1