JQuery:在多个选择之间添加空格

JQuery:在多个选择之间添加空格,jquery,Jquery,我在div中选择了一些段落: $('#myDiv p.p1, #myDiv p.p2').text(); 我的问题是,我想在每个选择之间添加空格,以便输出为:段落1空格段落2,而不是段落1段落2 有什么想法吗?您可以使用.map with.get创建一个单独段落的数组,然后使用.join将它们连接在一起,中间留一个空格 试试这个: var result = $('#myDiv p.p1, #myDiv p.p2').map(function() { return $.text([thi

我在div中选择了一些段落:

$('#myDiv p.p1, #myDiv p.p2').text();
我的问题是,我想在每个选择之间添加空格,以便输出为:段落1空格段落2,而不是段落1段落2

有什么想法吗?

您可以使用.map with.get创建一个单独段落的数组,然后使用.join将它们连接在一起,中间留一个空格

试试这个:

var result = $('#myDiv p.p1, #myDiv p.p2').map(function() {
    return $.text([this]);
    // return this.innerHTML;              // Alternate means of getting text
    // return this.firstChild.nodeValue;   // Another alternate
}).get().join(" ");
结果变量应该使用空格分隔段落

编辑:根据@J-p的评论,更新文本检索以提高效率

您可以使用.map with.get来创建一个单独段落的数组,然后使用.join将它们连接在一起,中间留一个空格

试试这个:

var result = $('#myDiv p.p1, #myDiv p.p2').map(function() {
    return $.text([this]);
    // return this.innerHTML;              // Alternate means of getting text
    // return this.firstChild.nodeValue;   // Another alternate
}).get().join(" ");
结果变量应该使用空格分隔段落


编辑:根据@J-p的评论,更新文本检索以提高效率

这将实现以下目的:

$('#myDiv p.p1, #myDiv p.p2').clone().append(' ').text()

这将实现以下目的:

$('#myDiv p.p1, #myDiv p.p2').clone().append(' ').text()

+1,虽然我认为$.text[this]比用$this…+1构建一个新的jQ对象要快一点,但我认为$.text[this]比用$this构建一个新的jQ对象要快一点…既然有人否决了这个解决方案,它有什么问题?它比patricks.Gert简单得多-虽然我没有投票反对你,但我不喜欢这样做,因为你在做不必要的DOM修改,而DOM修改很慢。@Thariama,@Gert-刚刚在Firefox上做了一个快速测试,在1000次迭代循环中只比较了这两个。DOM修改大约需要2200毫秒,我的大约需要100毫秒。尽可能避免DOM:o@patrick-我感谢你的反馈。我猜$'myDiv p.p1,myDiv p.p2'。clone.append'。文本会更好。不过,不确定克隆功能的速度有多快。Gert-Using.clone提供了巨大的改进。把它降到190毫秒左右!还是没有那么快,但要好得多。既然有人否决了这个解决方案,它又有什么问题呢?它比patricks.Gert简单得多-虽然我没有投票反对你,但我不喜欢这样做,因为你在做不必要的DOM修改,而DOM修改很慢。@Thariama,@Gert-刚刚在Firefox上做了一个快速测试,在1000次迭代循环中只比较了这两个。DOM修改大约需要2200毫秒,我的大约需要100毫秒。尽可能避免DOM:o@patrick-我感谢你的反馈。我猜$'myDiv p.p1,myDiv p.p2'。clone.append'。文本会更好。不过,不确定克隆功能的速度有多快。Gert-Using.clone提供了巨大的改进。把它降到190毫秒左右!仍然没有那么快,但要好得多。