Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从div中选择文本-不明显的方式_Javascript_Jquery_Dom_Twitter Bootstrap - Fatal编程技术网

Javascript 从div中选择文本-不明显的方式

Javascript 从div中选择文本-不明显的方式,javascript,jquery,dom,twitter-bootstrap,Javascript,Jquery,Dom,Twitter Bootstrap,这是我的部门: <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="" titl

这是我的部门:

<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>
我试着用jquery选择器玩$.filter或$.not或$.children等。我找不到正确的方法。需要帮助

您可以在JSFIDLE中找到一些代码:

[编辑] 一种解决方案建议使用以下代码:

$('#result').append( $('#myDiv').text().replace($(".btn-group").text(),"") ).append('<br />')

因此,如果我明白了,您希望从.text中排除该列表。尝试以下方法:

$('#result').append( $('#myDiv').text().replace($(".dropdown-menu").text(),"") ).append('<br />')
试一试


演示:

如果您不介意将所有哑文本放在span中,那么只需抓取哑文本span和.cordial err corr span并查找即可


演示:

我有一个难看的方法,虽然我想这个方法很简单:

我们可以创建一个副本,然后删除不想显示的dom元素。然后我们可以得到想要的文本

var clone_div = $('#myDiv').clone();
clone_div.find('.btn-group').remove();
$('#result').append(clone_div.text()).append('<br />');

这是JSFIDLE

正则表达式来提取div.text的字符吗?首先,您必须区分哪个li是正确的,然后才能继续筛选。如果您选择的是正确的li,那么您可以尝试使用jQuery的:selected selector:此选项有效:但您需要更改jQuery版本。既然我们知道版本需要更新,这里的其他人可能会告诉我们为什么1.7.2不起作用为什么使用列表而不是元素?我考虑过这个解决方案,虽然很难看,但很有效;非常感谢。我会检查其他的。谢谢,我想这是最干净的解决方案。请参阅我取消选中您的解决方案为已接受,因为我需要更多的帮助,请参阅我问题中的编辑。好的,周一不是思考的最佳日期…$。dropdown-menu.text在一个菜单中返回所有文本,因此replace从未找到此关联文本。所以我想添加一个循环。但是如果有其他文本与$.dropdownn menu.text返回的文本相同呢?@pktangyue是的,我在实现它的时候考虑过这个问题。但我们可以验证,如果第一个单词是A,建议是B,我们将有AAB或BAB。所以这是一个简单的启发式方法,但我实现了它。您的解决方案很好,但不能与JSFIDLE中显示的原始html代码一起工作:您的解决方案太复杂,太长。安德烈·内梅斯找到了一个单线解决方案。看见
$('#result').append( $('#myDiv').text().replace($(".dropdown-menu").text(),"") ).append('<br />')
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(' '))
<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>
$('#myDiv').find('.cordial-err-corr,.cordial-content').text()
var clone_div = $('#myDiv').clone();
clone_div.find('.btn-group').remove();
$('#result').append(clone_div.text()).append('<br />');