在此和下一个已知元素之间获取文本

时间:2013-10-25 07:13:59

标签: jquery

任何人都可以通过以下代码告诉我我做错了吗?

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

3 个答案:

答案 0 :(得分:3)

这是怎么回事?无需更改HTML:

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

顺便说一下,由于只有一个复选框一次检查name=rinput,因此each()方法是多余的。我在您的选择器中使用了[name=rinput]:checked

JSFiddle

答案 1 :(得分:0)

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

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

答案 2 :(得分: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>

但我也会使用值属性。