如何围绕没有HTML标记的文本使用jQuery?

问题描述

|
<span id=\"subscription-toggle\" class=\"list:subscription\">

&nbsp;|&nbsp; <!-- I want to surround this with a div with a class -->

<span class=\"\" id=\"subscribe-77\" style=\"\">
<a class=\"dim:subscription-toggle:subscribe-77:is-subscribed\" href=\"http://localhost/taiwantalk2/topic/topic-with-two-tags-topic-with-two-tags-topic-with-two-tags/?action=bbp_subscribe&amp;topic_id=77&amp;_wpnonce=25988e5dac\">Subscribe</a>
</span>

</span>
因此,这应该是最终结果:
<span id=\"subscription-toggle\" class=\"list:subscription\">

<div class=\"hide-this\">&nbsp;|&nbsp;</div>

<span class=\"\" id=\"subscribe-77\" style=\"\">
<a class=\"dim:subscription-toggle:subscribe-77:is-subscribed\" href=\"http://localhost/taiwantalk2/topic/topic-with-two-tags-topic-with-two-tags-topic-with-two-tags/?action=bbp_subscribe&amp;topic_id=77&amp;_wpnonce=25988e5dac\">Subscribe</a>
</span>

</span>
    

解决方法

        如果您希望将
div
环绕的文本节点是唯一的文本节点(即它是inside3ѭ内唯一的文本,且不在另一个元素内),则可以执行以下操作:
$(\"#subscription-toggle\").contents().filter(function() {
    return this.nodeType == 3;
}).wrap(\"<div class=\'hide-this\'></div>\");
您可以在此处查看示例。 或者,如果
span
中有多个文本节点,而您只想换行
|
个字符,请用以下行替换
filter
函数的主体:
return $(this).text().indexOf(\"|\") != -1;
您可以在此处看到该示例的示例。     ,        我尚未测试过,但应该可以:
var subsc = $(\'#subscription-toggle\');
subsc.html(subsc.html().replace(\'/(&nbsp;\\|&nbsp;)/g\',\'<div class=\"hide-this\">$1</div>\'));
    ,        您可以使用jquery的“ 10”功能实现此目标:http://api.jquery.com/wrap/ 因此,您可以使用
:contains
选择器搜索
&nbsp;|&nbsp;
,而不使用
wrap
函数。     ,        怎么样: $(\“#subscription-toggle \”)。prepend(function(){     返回$(\“ \”)。append(this.childNodes [0]); });     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...