如何在XPath / CSS定位器中排除一个孩子

时间:2019-04-12 09:06:51

标签: html xpath css-selectors

除了'by'以外,是否有任何其他方法来获取div的内部文本?

perform('foo')('grey')(Array.prototype.filter)(g => true);

4 个答案:

答案 0 :(得分:0)

您可以像这样用Jquery做到这一点...但是它也会删除"," ... 检查一下:

$(document).ready(function(){
  var name = $('div').children('em');
  $('div').html(name);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="name">
    "by "
    <em>Some Author</em>
    ", "
    <em>Another Author</em>
</div>

答案 1 :(得分:0)

您可以尝试以下表达式:

//em/text()

输出:

    'Some Author'
    'Another Author'

答案 2 :(得分:0)

您可以在XPath下面尝试获取除第一个之外的所有后代文本节点:

(//div//text())[position() > 1]

答案 3 :(得分:0)

关于HTML的一个非常奇怪的地方是“ Some Author” <em>和逗号之间的引号和空格。我想你的意思是:

<div class="name">
  by <em>Some Author</em>, <em>Another Author</em>
</div>

使用XPath,您可以使用以下查询来获取节点:

//*[@class='name']/node()[position()>1]

如果我们正在谈论浏览器环境,并且您想要一个字符串,而不仅仅是节点的集合,则可以执行以下操作:

document.querySelector('div.name').textContent.replace(/^\s*by\s*/, '')