css不要选择子元素

时间:2015-12-08 16:13:20

标签: jquery html domcrawler

让我说我的html如下:

<h3 class="search-result-title">
            This is a test
            <small class="search-result-subtitle">
                Some more explanation
            </small>
        </h3>

如何在没有This is a test的情况下过滤文字small

编辑:我正在使用symfony Dom Crawler。

所以我有filter(a. h3 search-result-title);但我不想要small元素的内容。

5 个答案:

答案 0 :(得分:1)

您可以使用filter()元素作为参数,然后small来使用remove()提取内容。

&#13;
&#13;
$('.search-result-title').contents().filter("small").remove();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h3 class="search-result-title">
   This is a test
   <small class="search-result-subtitle">
      Some more explanation
   </small>
 </h3>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用此代码仅获取h3元素的文本。

document.querySelector('.search-result-title').firstChild.textContent

答案 2 :(得分:0)

使用span标记This is a test和用户$('h3.search-result-title>span:first-child')来选择。

答案 3 :(得分:0)

我看到你使用的是jquery所以我发现了这个:text without child

您可以这样做:

$.fn.ignore = function(sel){ return this.clone().find(sel||">*").remove().end(); }; console.log($("h3.search-result-title").ignore("small").text().trim());

这将返回'这是一个测试'

希望它有所帮助!

答案 4 :(得分:0)

您可以.filter()使用.contents()

var txt = $('h3.search-result-title').contents().filter(function(){
    return this.nodeType == 3; 
 });