9

如何<br/>使用 jquery 拆分包含标签的字符串。我尝试了以下代码,但在控制台中出现错误。我不确定如何根据<br/>标签拆分字符串这是我尝试过的代码

jQuery(document).ready(function($)
    {
        var lines = jQuery('this is for testing <br/> How are you<br/>').split('<br/>');
        jQuery.each(lines, function() {
            alert(this);
        });
    });

任何建议都会很棒。

4

10 回答 10

12

这里有很多重复的答案。这个不同。如果你能保证<br/>标签的拼写,其他答案都可以。但如果您无法控制 HTML,则换行标记可能有不同的格式:

<br/>
<BR/>
<br />
<br>
<br >
...等。

主流浏览器都可以处理所有这些,但只有第一个会被建议的.split("<br/>")操作处理。一个更健壮的选项是使用正则表达式来匹配标签:

jQuery(document).ready(function($)
{
    var brExp = /<br\s*\/?>/i;
    var lines = ("this is for testing <br/> How are you<BR />").split(brExp);
});

我已经将表达式编写为不区分大小写,在“<br”之后允许有任意数量的空格,并且“/”是可选的。

于 2016-10-18T18:29:30.050 回答
10

您想拆分香草字符串,不要$()简单地将其传递给;

jQuery(document).ready(function($)
    {
        var lines = 'this is for testing <br/> How are you<br/>'.split('<br/>');
        jQuery.each(lines, function() {
            alert(this);
        });
    });
于 2013-09-03T12:20:36.137 回答
2

尝试使用这个:

var exploded = lines.split('<br />'); 

更多信息在这里

于 2013-09-03T12:22:06.237 回答
2

如果你尝试:

jQuery(document).ready(function($)
    {
        var lines = 'this is for testing <br/> How are you<br/>'.split('<br/>');
        each(lines, function() {
            alert(this);
        });
    });
于 2013-09-03T12:22:43.990 回答
1

无需像这样包装在 jquery 中:

jQuery('this is for testing <br/> How are you<br/>').split('<br/>');

Can be like :

('this is for testing <br/> How are you<br/>').split('<br/>');

演示

于 2013-09-03T12:21:59.737 回答
1

尝试这个

jQuery(document).ready(function($)
    {
        var lines = ('this is for testing <br/> How are you<br/>').split("<br/>");
        jQuery.each(lines, function() {
            alert(this);
        });
    });

演示

于 2013-09-03T12:22:02.740 回答
1

你不能做类似的事情:

 var lines = 'this is for testing <br/> How are you<br/>'.split('<br/>');

就像旁注一样,如果您想摆脱空元素,您可以lines像这样过滤:

// this will get rid of empty elements 
lines = lines.filter(function(n) { 
    return n; 
});
于 2013-09-03T12:20:47.513 回答
1
jQuery(document).ready(function($)
{

var str = 'this is for testing <br/> How are you<br/>';
var lines = str .split('<br/>');
     jQuery.each(lines, function() {
        alert(this);
    });
});
于 2013-09-03T12:21:39.047 回答
1

这是工作代码

jQuery(document).ready(function($)
    {

        var lines = 'this is for testing <br/> How are you<br/>'.split('<br/>');
                alert("workig");
        jQuery.each(lines, function() {
            alert(this);
        });
    });
于 2013-09-03T12:23:27.633 回答
1

这不是 jQuery 解决方案,但希望有人会发现它有用。该函数返回一个或两个元素。

function splitContentsOnBr(el) {
    const before = document.createElement('div');
    const after = document.createElement('div');
    let found = false;
    el.childNodes.forEach(c => {
        if (found) {
            after.appendChild(c.cloneNode(true));
        } else if (c.tagName == 'BR') {
            found = true;
        } else {
            before.appendChild(c.cloneNode(true));
        }
    });
    return after.childNodes.length ? [before, after] : [before];
}
document.querySelector('#result').innerHTML = splitContentsOnBr(document.querySelector('h1'))
    .map(el => el.textContent.trim())
    .join(', ');
<h1>
  First part
  <br>
  Second part
</h1>
<div id="result">
</div>

于 2019-06-08T16:58:53.403 回答