无法使用jquery定位所需的数据

时间:2018-05-17 06:41:15

标签: javascript jquery html

在下面的代码中我'试图获得" 1"它位于td内,想要排除按钮的文本。我尝试使用:not('button'),但它无效。 这是我的HTML在渲染之前的样子:

<td id="sqty">
  <?php echo $quantity; ?>
  <?php if(!empty($ret_qty)){ ?><button style="margin-left: 2px;" class="btn btn-danger btn-xs">returned <?php echo $ret_qty; ?></button><?php } ?>
</td>

这是渲染后HTML的样子:

 <td id="sqty">1
       <button style="margin-left: 2px;" class="btn btn-danger btn-xs">returned 3</button>
  </td>

JS:

var pickQty = $(".exchange-panel .prod-in-bill").find("#"+id).find("#sqty:not('button')").text().replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '');

2 个答案:

答案 0 :(得分:1)

您无法使用CSS选择器选择文本节点。为什么不选择sqty并获取其第一个子节点,即文本节点?不需要jQuery

&#13;
&#13;
const num = document.querySelector('#sqty').childNodes[0].textContent.trim();
console.log(num);
&#13;
<table><tr>
<td id="sqty">1
  <button style="margin-left: 2px;" class="btn btn-danger btn-xs">returned 3</button>
</td>
</tr></table>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以找到子元素,删除它们,在删除子元素后选择最后一个值,最后修剪空格。

&#13;
&#13;
var id = 'sqty';
var pickQty = $("#"+id).children().remove().end().text().trim();
console.log(pickQty);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
 <tr>
  <td id="sqty">1
         <button style="margin-left: 2px;" class="btn btn-danger btn-xs">returned 3</button>
    </td>
 </tr>
</table>
&#13;
&#13;
&#13;