在JQuery中从字符串中移除动态字符串
Removing a dynamic string from a string in JQuery
我有一个html字符串,其中包括一个表标记。在table标签中可以有各种各样的标签(tr/td等)。
如何从字符串中删除标签,同时保留html的其余部分?
Ie:如果字符串是
"<p>testing<table><tr><td>cell 1</td></tr></table> a table</p>"
那么我希望结果是
"<p>testing a table</p>"
编辑:提供更多细节:我无法控制html, p只是一个例子,它可以是标签的任何组合或(尽管只有一个表)
之外的纯文本。编辑2:参见上面的"如何从字符串中删除标签,同时保留html的其余部分?"这意味着,如果(在表外)有一个元素被加粗或强调,那么该标签不应该停止
简单地删除所有标记,然后将剩下的(原始文本)附加在p
元素内。没有正则表达式,没有火箭科学
使用remove方法
这将工作,如果浏览器允许你把一个块元素,如table
在p
:var p_el = $("<p>testing<table><tr><td>cell 1</td></tr></table> a table</p>")
# Note: This gets slit into 3 elements: p, table, p. This would not
# happen with a table inside a block element like a `div`
# Find all table elements and remove them:
p_el.find('table').remove()
# If you want the string back you can do:
p_el[0].outerHTML # p_el[0] gets the DOM object from the jQuery object
# If the string has already been rendered, then of course you should use the
# appropriate selector to find the `table` elements within `p` elements and then remove them:
$('.someParentEl p table').remove()
# If you need to remove multiple types of elements, then a more elaborate
# selector can be used within remove. I recommend reading up on jQuery selectors
# But an example might be to exclude div tags as well:
$('.someParentEl p').find('table, div').remove()
# What I suspect is that you actually want to remove all block elements from the string
# (table, div, etc. leaving b, i, strong, span, etc.):
$('.someParentEl p *').filter(function(index) {return $(this).css("display") === 'block'}).remove()
# Note: This will only work on elements already in the DOM.
相关:为什么
查询简单易懂。
但是table不应该包含在p标签里面。您需要使用其他HTML标记。我用div代替p标签。
var stag="<div>testing<table><tr><td>cell 1</td></tr></table> a table</div>";
function removeTag(text, selector) {
var content= $(text);
content.find(selector).remove();
return content.text();
}
var pString = removeTag(stag, "table");
alert(pString);
您可以使用下面的代码来删除标签。
$('tag_to_remove').contents().unwrap();
检查这个小提琴
我认为你的html输出是错误的当你在浏览器中执行这个html时它会显示如下
<p>testing</p>
<table>
<tbody>
<tr>
<td>cell 1</td>
</tr>
</tbody>
</table>
a table
所以当你试图在"p"标签中获取文本时,你只会得到"testing"作为输出。如果html是正确的,那么你可以尝试使用using
删除表$('p table').remove();
那么你就能得到想要的输出。
相关文章:
- javascript在动态Url中匹配并添加字符串
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- 如何将动态构建的字符串作为http头在http.call中与流星一起传递
- 如何在字符串中的值之前删除字符串中的动态数据?/ 使用 Lodash 的 _.trimStart 与动态数据
- 将字符串与integer连接,用作jquery中的变量(创建动态变量)
- 从标记值jquery中删除动态生成的字符串
- 将字符串动态转换为布尔值
- 根据 Array Javascript 中的字符串值动态创建数组名称
- '使用文本区域中的字符串动态填充下拉菜单
- 使用 URL 查询字符串动态显示 Facebook Open Graph
- 获取表单中选中复选框的值以分隔字符串(动态命名)
- 如何从HTML字符串动态添加脚本到网页
- 如何执行一个JavaScript函数,当我发送它的名字作为字符串动态不带参数
- 连接字符串动态Javascript
- 如何通过构建字符串动态访问变量
- 如何将插入的字符串/动态属性传递到Javascript哈希中
- JavaScript 从字符串动态创建多维数组
- 从字符串动态创建Javascript对象,并将对象作为函数的参数
- 在asp.net中添加字符串动态java脚本
- JSP名称参数作为字符串动态显示在同一个JSP页面中