我正在尝试使用jQuery从.text()获取div文本。这是有效的,但div用作内联编辑器(tinymce),因此在那里有一些标记,例如:
<p>sometext<span id="_mce_caret" data-mce-bogus="true"><strong>sometext2</strong></span><br data-mce-bogus="1"></p>
跨度基本上是一个新行,但是在获取文本时,所有html标记都被删除(这是必需的),但文本也合并为一个“单词”:
sometextsometext2
虽然它应该是:
sometext sometext2
甚至可能是:
sometext。 sometext2。
怎么做?
这是我已经使用过的代码:
var textareaValues = jQuery('.desc-meta').map(function(){
return jQuery(this).text();
}).get();
console.log(textareaValues);
由于
修改 关于缺少的更多信息: 我有多个div(5或6):
<div class="desc-meta">
<p>sometext<span id="_mce_caret" data-mce-bogus="true">
<strong>sometext2</strong></span><br data-mce-bogus="1"></p>
</div>
<div class="desc-meta">
<p>This is some extra sometext<span id="_mce_caret" data-mce-bogus="true">
<strong>Some extra sometext2</strong></span><br data-mce-bogus="1"></p>
</div>
<div class="desc-meta">
<p>sometext<span id="_mce_caret" data-mce-bogus="true">
<strong>sometext2</strong></span><br data-mce-bogus="1"></p>
</div>
这些div中的文本需要“合并”为1个字符串,所以上面的div应该是:
sometext sometext2. This is some extra sometext Some extra sometext2. sometext sometext2.
这将存储在隐藏的输入中。 所以没有html标签,但保持单词/句子之间的空格。
这是我所熟悉的jquery:
var descText = '';
jQuery('#registration-form').find('.desc-meta').each(function(){
if (jQuery.trim(jQuery(this).text()) != "") {
var textareaValues = jQuery('.desc-meta').map(function(){
return jQuery(this).text();
}).get().join(' ');
console.log(textareaValues);
descText = textareaValues.join(', ');
}
});
jQuery('#description').val(descText);
答案 0 :(得分:0)
我想你们希望在单词之间留一个空格,只需将空间连接起来:
ref.child('teams/red').orderByChild('sortTotals')
答案 1 :(得分:0)
如果我没弄错,你的.desc-meta
就是包装。所以你应该给我们以下HTML
<div class="desc-meta">
<p>sometext<span id="_mce_caret" data-mce-bogus="true"><strong>sometext2</strong></span><br data-mce-bogus="1"></p>
</div>
否则代码中的那个类在哪里?
所以你不是从包装器div中的元素循环。因此,您只是将desc-meta
的内容作为字符串。实际上,您需要该类中元素的内容。所以我们使用find(*)
来获取包装器div中的所有元素。
var textareaValues = jQuery('.desc-meta').find('*').map(function(){
return jQuery(this).text();
}).get();
console.log(textareaValues);
这里,我们循环遍历容器中的任何元素,而不是循环遍历容器,在您的情况下,我们循环遍历p
,span
和strong
最终结果如下:
["sometextsometext2", "sometext2", "sometext2", ""]
注意,第一个是第一个p
的内容,即p
内的所有内容,最后一个空值是中断。这就是你要做的事情,并没有那么好的工作(特别是如果你不知道有多少元素,如果你这样做,那么你就得到[1]
和{{ 1}}从上面开始,完成工作。
更好的方法是获取html,并自己添加空格。
[2]
上面我们得到了html,现在我们需要在每个元素的开头添加空格。
var textareaValues = jQuery('.desc-meta').map(function(){
return jQuery(this).html();
}).get();
对于多个div容器,请使用以下
$str = textareaValues[0].split('<').join(' <');
如果您只想var str = textareaValues.join('').split('<').join(' <');
最终结果很难看,但假设您要将其添加到页面中。
console.log($str)
最终结果是空格。