这是我的div:
<div id="myDiv">The
<span class="cordial-err-corr" id="good0-0" data-original-title="" title="">best</span>
way to receive congrats
<span>
<span class="cordial-err-corr" id="good0-1" data-original-title="" title="">are</span>
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a class="prop0-1">is</a></li>
<li><a class="prop0-1">are</a></li>
</ul>
</div>
</span> to give a correct answer.</div>
我想得到这样的文字:“接受恭喜的最佳方式是给出正确答案。”
所以我打电话给$('#myDiv').text()
。因为我在ul.dropdown-menu
中得到了两个元素,所以它不起作用。
下一步是过滤或删除不想要的孩子,即:
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a class="prop0-1">is</a></li>
<li><a class="prop0-1">are</a></li>
</ul>
</div>
我试图用$ .filter或$ .not或$ .children与jquery选择器等玩。我找不到正确的方法来做到这一点。需要帮助!
你可以在jsfiddle中找到一些代码:http://jsfiddle.net/Ku7FY/
[编辑] 一个解决方案建议使用此代码:
$('#result').append( $('#myDiv').text().replace($(".btn-group").text(),"") ).append('<br />')
如果存在多个div.btn-group
,则只需循环:
var result = $('#myDiv').text();
$(".btn-group").each(function() {
result = result.replace($(this).text(),"");
});
$('#result').append(result).append('<br />')
答案 0 :(得分:2)
所以,如果我直截了当,你想要从.text()
中排除列表。尝试类似:
$('#result').append( $('#myDiv').text().replace($(".dropdown-menu").text(),"") ).append('<br />')
答案 1 :(得分:1)
尝试
function process(el){
var array = [];
$(el).contents().each(function(){
var $this = $(this), text;
if(this.nodeType == 3){
text = $.trim($this.text());
if(text){
array.push(text)
}
} else if($this.is(':not(.btn-group)')){
Array.prototype.push.apply(array, process(this))
}
})
return array;
}
console.log(process($('#myDiv')).join(' '))
演示:Fiddle
答案 2 :(得分:1)
如果您不介意将所有“哑”文本放在跨度中,那么您可以通过仅抓取“哑”文本跨度和“.cordial-err-corr”跨度(以及{{1 }})。
find()
和
<div class="well" id="myDiv"><span class="cordial-content">The </span>
<span class="cordial-err-corr" id="good0-0" data-original-title="" title="">best </span>
<span class="cordial-content">way to receive congrats </span>
<span>
<span class="cordial-err-corr" id="good0-1" data-original-title="" title="">are </span>
<div class="btn-group">
<a class="btn btn-mini dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a class="prop0-1">is</a></li>
<li><a class="prop0-1">are</a></li>
</ul>
</div>
</span> <span class="cordial-content">to give a correct answer. </span></div>
演示:Fiddle
答案 3 :(得分:1)
我有一个丑陋的,虽然很简单(我猜)的方法:
我们可以制作副本,然后删除我们不想显示的dom元素。然后我们就可以得到想要的文字了。
var clone_div = $('#myDiv').clone();
clone_div.find('.btn-group').remove();
$('#result').append(clone_div.text()).append('<br />');
这是jsfiddle。 http://jsfiddle.net/Ku7FY/4/