获取范围内容但忽略H2。 JQUERY

时间:2011-12-21 14:01:29

标签: jquery

我有一个span,其中包含我想要使用的文字。但是在这个span中,我想忽略h2。 (这不是我的标记,我无法改变这一点,因此移动h2以外的span不是一种选择)

这是标记:

<span>
<h2>Joe Bloggs</h2>
Executive Director
</span>

以下是我目前的代码,其中包含span

h2内容
currentLi = $('ul#example2 li.frame3');

position = $(currentLi).find('span').text();

所以我充满希望的结果将是变量position包含文本&#34;执行董事&#34;

5 个答案:

答案 0 :(得分:3)

克隆范围,删除<h2>,然后获取剩余文字。

var clone = $(document).find('span').clone();
$(clone).find('h2').remove();

var position = $(clone).text().trim();

http://jsfiddle.net/ukFWq/

的工作演示

答案 1 :(得分:3)

如何将filter.contents一起使用。在filter函数中,您可以评估nodeType属性,确保它是3(仅限文本节点):

var onlySpan = $("span").contents().filter(function () {
    return this.nodeType === 3;
}).text().trim();

示例: http://jsfiddle.net/Wp4FR/

答案 2 :(得分:0)

这是我永远不会建议您的,但根据您的要求,以下代码可以正常工作。

    var index = position.indexOf('</h2>');
    position = position.substring(index+5, position.length)
    alert(position); 

答案 3 :(得分:0)

最好使用textchildren插件

您可以在此jsfiddle

中找到演示

您所要做的就是使用这样的插件

$('span').textChildren()

答案 4 :(得分:0)

你也可以使用not过滤器。

currentLi = $('ul#example2 li.frame3');

position = $(currentLi).find('span:not(h2).text()').text();

您也可以使用非方法

span.not(h2)