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选中,因此您的each()方法是多余的。我已经[name=rinput]:checked在您的选择器中使用了。

JSFiddle

于 2013-10-25T07:22:31.873 回答
0

为什么要使用值属性我认为您可以使用 jquery 轻松获取值

<table>
  <tr>
    <td>
      <input type="radio" name="rinput" value="$100"> <br>
      <input type="radio" name="rinput" value="$200"> <br>
    </td>
  </tr>
</table>
于 2013-10-25T07:19:00.707 回答
0

$(this)是您的输入,.nextUntil('br')获取输入和 br 而不是文本节点,.text()获取输入和 br 的内容文本。

如果您真的想这样做,请将您的文本放在跨度或任何其他元素中。

<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>

但我也会使用 value 属性。

于 2013-10-25T07:21:58.803 回答