如何在使用jquery / javascript的br之后删除div内的文本字符串?

时间:2016-09-30 14:54:43

标签: javascript jquery

我一直在尝试删除每个div中<br>之后的变量生成定价(来自生成的列表)。这是:

<div class="p-name">
    <a href="somelink.html" class="TLink">Product Name<br>$1.91</a>
</div>
<div class="p-name">
    <a href="somelink2.html" class="TLink">Product Name2<br>$55.91</a>
</div>

我试过了:

$('.p-name').nextAll('br').remove();

$(".p-name").nextAll().remove();

价格可以从0.00美元到40,000.00美元

有任何帮助吗?我应该使用Javascript吗?

3 个答案:

答案 0 :(得分:2)

每个锚标记都有三个子节点:text + br + text。

要删除br + tx,您可以这样做:

&#13;
&#13;
$('.p-name').find('a').each(function(index, element) {
  element.childNodes[1].remove();
  element.childNodes[1].remove();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div class="p-name">
    <a href="somelink.html" class="TLink">Product Name<br>$1.91</a>
</div>
<div class="p-name">
    <a href="somelink2.html" class="TLink">Product Name2<br>$55.91</a>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

另一种方法是使用a

重置每个substr的内容

$(".p-name a").each(function() {
  var content = $(this).html();
  $(this).html(content.substr(0,content.indexOf('<br>')));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="p-name">
  <a href="somelink.html" class="TLink">Product Name<br>$1.91</a>
</div>
<div class="p-name">
  <a href="somelink2.html" class="TLink">Product Name2<br>$55.91</a>
</div>

答案 2 :(得分:1)

您可以定位<br>元素,然后定位其后的所有兄弟元素,然后删除所有元素,这样就不会计算文本节点,这可能是不可靠的

$('.TLink br').each(function(_, el) {
  var els = [];
  while (el = el.nextSibling) els.push(el);
  $(els).remove();
}).remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="p-name">
  <a href="somelink.html" class="TLink">Product Name<br>$1.91</a>
</div>
<div class="p-name">
  <a href="somelink2.html" class="TLink">Product Name2<br>$55.91</a>
</div>