1

次のコードで私が間違っていることを誰か教えてください。

<table>
  <tr>
    <td>
      <input type="radio" name="rinput">$100 <br>
      <input type="radio" name="rinput">$200 <br>
    </td>
  </tr>
</table>

<script>
$('table').click(function () {
  $('input[type="radio"]').each(function() {
    if($(this).is(':checked')) {
      var text = $(this).nextUntil('br').text();
      alert(text);
    }
  });
});
</script>

基本的に、チェックされている場合、現在の要素「$(this)」と次の要素「br」の間のテキストを取得しようとしています。

http://jsfiddle.net/wu3bf/

4

3 に答える 3

3

これはどのように?HTML を変更する必要はありません:

$('table').click(function () {
  text = $('input[type=radio][name=rinput]:checked')[0].nextSibling.nodeValue;
  alert(text);
});

ちなみに、name=rinput一度にチェックされたチェックボックスは1つしかないため、each()メソッドは冗長です。[name=rinput]:checked代わりにセレクターで使用しました。

JSFiddle

于 2013-10-25T07:22:31.873 に答える
0

$(this)はあなたの入力で.nextUntil('br')あり、テキストノードではなく入力とbrを取得し、入力とbr.text()のコンテンツテキストを取得します。

本当にこのようにしたい場合は、テキストをスパンまたはその他の要素に入れます。

<table>
  <tr>
    <td>
      <input type="radio" name="rinput"><span>$100</span><br>
      <input type="radio" name="rinput"><span>$200</span><br>
    </td>
  </tr>
</table>

<script>
$('table').click(function () {
  $('input[type="radio"]').each(function() {
    if($(this).is(':checked')) {
      var text = $(this).nextUntil('br').text();
      alert(text);
    }
  });
});
</script>

しかし、私は値属性も使用します。

于 2013-10-25T07:21:58.803 に答える