简体   繁体   English

使用jQuery删除两个html标记之间的文本

[英]Remove text between two html tags using jQuery

I have the following HTML : 我有以下HTML:

<span>
<input type="text" value="0" size="10" class="element text currency" readonly="readonly" name="element_18_1" id="element_18_1"> .       
<label for="element_18_1">Dollars</label>
</span>

I would like to remove the dot between the input and the label tags using jQuery. 我想使用jQuery删除输入和标签标签之间的点。

I tried this code with no result : $('#element_18_1').contents(':gt(2)').remove(); 我尝试了以下代码,但没有结果: $('#element_18_1').contents(':gt(2)').remove(); Thanks 谢谢

This removes all texts which are not inside a tag (as element) 这将删除所有不在标签内的文本(作为元素)

 $(document).ready(function(){ current = $('#element_18_1'); siblings = $('#element_18_1').siblings(); parent = $('#element_18_1').parent(); $(parent).html(''); $(parent).append(current).append(siblings); }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <span> <input type="text" value="0" size="10" class="element text currency" readonly="readonly" name="element_18_1" id="element_18_1"> . <label for="element_18_1">Dollars</label> </span> 

You can make it shorter by joining some lines. 您可以通过加入一些行来使其更短。 I tried to show it step by step 我试图逐步展示它

You could, however always choose an easier way, a simpler way, a clan slate readable and understandable way, a pure JavaScript way. 但是,您始终可以选择一种更简单的方法,一种更简单的方法,氏族的可读和可理解的方法,一种纯JavaScript的方法。

element_18_1.nextSibling.data=" ";

 element_18_1.nextSibling.data=" "; 
 <span> <input type="text" value="0" size="10" class="element text currency" readonly="readonly" name="element_18_1" id="element_18_1"> . <label for="element_18_1">Dollars</label> </span> 

You can use contents() and slice() , ie: 您可以使用contents()slice() ,即:

 var el1 = $("#element_18_1"), el2 = $("#element_18_1 + label"), contents = el1.parent().contents(); contents.slice(contents.index(el1) + 1, contents.index(el2)).remove(); el1.after(" "); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <span> <input type="text" value="0" size="10" class="element text currency" readonly="readonly" name="element_18_1" id="element_18_1"> . <label for="element_18_1">Dollars</label> </span> 

As stated here , I suggest to filter out the text node(s), and remove them: 如此处所述 ,我建议过滤出文本节点并删除它们:

$('span')
  .contents()
  .filter(function() {
    return this.nodeType == 3; //Node.TEXT_NODE
  }).remove();

See fiddle . 见小提琴

这段代码有点粗糙,但应该可以

$("span:contains('.')").html($("span:contains('.')").html().replace('.',''));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM