Javascript 我有一个下面指定的场景,希望使用jquery获得预期的场景

Javascript 我有一个下面指定的场景,希望使用jquery获得预期的场景,javascript,jquery,html,Javascript,Jquery,Html,我尝试过类似的方法,但没有找到所需的输出: $('div').contents().filter(function() { return this.nodeType === 3; }).wrap( '<p></p>' ).end().filter( 'br' ).remove(); $('div').contents().filter(函数(){ 返回this.nodeType===3;}).wrap('').end().filter('br').remove();

我尝试过类似的方法,但没有找到所需的输出:

$('div').contents().filter(function() {
 return this.nodeType === 3; }).wrap( '<p></p>' ).end().filter( 'br' ).remove();
$('div').contents().filter(函数(){
返回this.nodeType===3;}).wrap('

').end().filter('br').remove();
当前情景:

<div>
hello how r u- dummy Text
<br>
hie how -  dummy Text
<br>
<br>
Have a good day- dummy Text
Have a good day- dummy Text
Have a good day- dummy Text
</div>

你好,r u-虚拟文本

hie how-虚拟文本

祝你有一个愉快的一天-虚拟文本 祝你有一个愉快的一天-虚拟文本 祝你有一个愉快的一天-虚拟文本
预期结果:

<div>
<p>
hello how r u- dummy Text
<br>
hie how -  dummy Text
</p>
<p>
Have a good day- dummy Text
Have a good day- dummy Text
Have a good day- dummy Text
</p>
</div>


你好,r u-虚拟文本

hie how-虚拟文本

祝你有一个愉快的一天-虚拟文本 祝你有一个愉快的一天-虚拟文本 祝你有一个愉快的一天-虚拟文本


我想你应该这样做:

$('div')
    .contents()
        .filter(function() {
            return this.nodeType === 3 && this.nodeValue.trim(); 
        })
        .wrap('<p>')
        .end()
    .filter('br')
        .remove();
$('div')
.contents()
.filter(函数(){
返回this.nodeType==3&&this.nodeValue.trim();
})
.wrap(“”)
(完)
.filter('br')
.remove();
输出:

<p>
hello how r u- dummy Text
</p><p>
hie how -  dummy Text
</p>
<p>
Have a good day- dummy Text
Have a good day- dummy Text
Have a good day- dummy Text
</p>

你好,r u-虚拟文本

hie how-虚拟文本

祝你有一个愉快的一天-虚拟文本 祝你有一个愉快的一天-虚拟文本 祝你有一个愉快的一天-虚拟文本

我是对的



以下是

如果你把问题放在一个短语中而不是期望的输出,那么回答会更容易如果你试图删除所有的“br”标记,为什么期望的输出中会有一个“br”标记?你的问题基本上是什么?@Stan只是猜测,但双分隔符是一个段落边界,一次中断是不可能的。@Mathletics是的,你可能是对的,但他的语法永远不会产生预期的结果,所以我感到困惑。我想当两个文本行之间有一个1
时,块应该被包装成1,如果连续有2
则应该被删除。