3
 $("#" + mainContent).children("span").replaceWith(function(){ return $(this).text(); });

使用上面的代码行,我似乎无法用文本值替换所有跨度。

html看起来像

<div id="bla" contenteditable="true">
<span> bla finds this one</span>
    <div>
        <span> doesnt find me </span>
    </div>
</div>

如何选择 div "bla" 中的所有跨度并将它们全部替换?

替换工作只是查找没有。

4

4 回答 4

9

使用.find [文档]而不是.children. 它寻找所有的后代,而不仅仅是孩子。

查看所有不同遍历方法的 jQuery API:http: //api.jquery.com/category/traversing/tree-traversal/

于 2012-09-03T11:46:26.170 回答
4

你可以试试:

$('span',"#" + mainContent).each(function(){this.html('Something Different')})

也取决于您尝试用什么替换它们。

于 2012-09-03T11:47:01.347 回答
4

jQuery的children()函数只匹配直接子级。对于您的 DOM 结构,只有一个<span>元素是<div>您的选择器匹配的直接子元素。如果您要查找与选择器匹配的元素层次结构下的所有元素,则需要使用find()which 执行向下搜索,或者您必须修改选择器:

$('div span')将 div 下的所有跨度与 DOM 层次结构中的所有跨度匹配。

$('div > span') 匹配 DOM 中 div 的所有直接跨度子项。

于 2012-09-03T11:51:33.923 回答
1

使用 .find() 而不是 .children() :

$("#" + mainContent).find("span").replaceWith(function(){ return $(this).text(); });
于 2012-09-03T11:49:24.080 回答