Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery展开文本?_Jquery_Html - Fatal编程技术网

如何使用jQuery展开文本?

如何使用jQuery展开文本?,jquery,html,Jquery,Html,如何使用jQUery从HTML标记中展开文本 例如,如何转换此HTML <p>A <i>sentence</i> with <b>bold words</b>.</p> 用粗体字写的句子 插入(即移除粗体标签) 用粗体字写的句子 仅使用jQuery而不使用regex?如何使用取决于您的情况中的附加约束 没有解除绑定的通用方法 如果标记总是,则可以执行此操作 var h = $(elementSelector).html

如何使用jQUery从HTML标记中展开文本

例如,如何转换此HTML

<p>A <i>sentence</i> with <b>bold words</b>.</p>
用粗体字写的句子

插入(即移除粗体标签)

用粗体字写的句子


仅使用jQuery而不使用regex?

如何使用取决于您的情况中的附加约束

没有解除绑定的通用方法

如果标记总是
,则可以执行此操作

var h = $(elementSelector).html;
h = h.replace("<b>","");
h = h.replace("</b>","");
$(elementSelector).html(h);
var h=$(elementSelector).html;
h=h。替换(“,”);
h=h。替换(“,”);
$(elementSelector).html(h);

我不知道你为什么不喜欢正则表达式

要仅展开文本,而不展开其他您可以使用的内容,请执行以下操作:

$("b").replaceWith($("b").text());
您可以这样做:

  $("b").each(function() {
    $(this).replaceWith(this.childNodes);
  });
注意:这将保留
.text()
可能转换它的内部HTML

如果您想直接去掉
,可以在jQuery 1.4+中更轻松地使用

$("p").html(function(i,h){ return h.replace(/<b>/g,'').replace(/<\/b>/g,''); }); 
html(函数(i,h){返回h.replace(//g',).replace(//g',);});
我认为在这种情况下完全依赖jQuery会使事情变得不必要的复杂。使用接受普通字符串或正则表达式的
replace
方法会更容易


在这种情况下,使用正则表达式通常是一种方法,因为您需要具有大致相同模式的多个替换。

我非常喜欢先使用wrapInner,然后再使用unwrap

例如,如果您试图打开超链接

<a id="anId" href="#">sample text</a>

然后,您可以通过打开超链接

$('#anId').wrapInner('<span/>');
$('#anId span').unwrap();
$('anId').wrapInner('');
$('anId span').unwrap();

以选定元素的内容为目标并将其展开。

Urh,他的标记去哪里了?注意,当您有其他标记时,这是不安全的,如果任何HTML标记在
内,它将丢失。注意:再次大声朗读问题,它说删除粗体标记,而不是删除所有其他标记,所以请注意,如果任何人使用这种方法,并得到意外的行为。你忘记了这个问题和其他问题,所以后来人们试图解决一个稍微不同的问题时会发现这个问题。你不是总能解决手头的问题,如果有副作用,最好提一下。在1.4中,您也可以为这种方法传递一个函数:
$(“p”).html(函数(i,h){h=h.replace(//g',);返回h.replace(//g',);})
@Gaby-同意,但如果其他人遇到这个问题并想要那个解决方案,拥有它也没什么坏处。从技术上讲,我认为常规字符串.replace()使用正则表达式,不是吗?只是我没有在该字符串中使用任何正则表达式代码。这在从没有包装在任何其他元素中的文本中移除锚元素(或任何其他父元素)时特别有用,在这种情况下,unwrap方法不起作用。虽然“wrap and unwrap”方法适用于我刚才描述的内容,但它需要添加和剩余的标记,例如。这种方法在需要展开部分HTML而不测试内部文本()或HTML()的情况下仍然非常有效。我使用此方法允许用户取消选择和突出显示动态生成的HTML。
$('#anId').wrapInner('<span/>');
$('#anId span').unwrap();
$('b').contents().unwrap();