2012-09-03 52 views
1
$("#" + mainContent).children("span").replaceWith(function(){ return $(this).text(); }); 

使用上面的代码行我似乎无法代替所有跨度与文本值。jQuery Selctor,DIV内的所有跨度

的HTML看起来像

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

如何选择专区内“喇嘛”所有的跨度和全部更换?

的更换工作只是找到doenst ..

回答

2

您可以试试:

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

取决于你试图用得来取代他们什么。

+0

你得到的参数是错误的,OP想要替换整个元素,而不仅仅是内容。 –

+1

@ Felix - 谢谢,修正。有时我觉得我的整个生活都是倒退的:-) –

1

使用.find()代替。孩子():

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

的jQuery的children()功能只顾眼前利益的孩子相匹配。在您的DOM结构中,只有一个<span>元素是您的选择器匹配的<div>的直接子元素。在想要查找选择器所匹配的元素层级下的所有元素的情况下,您需要使用find()执行向下搜索,或者您必须修改选择器:

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

$('div > span')会匹配您DOM中div的所有直接子范围子元素。