jQuery根据标签标签从span标签返回文本

jQuery return text from span tags based on label tags

本文关键字:标签 返回 文本 span jQuery      更新时间:2023-09-26

我在我的页面上呈现了以下HTML:

<div class='panel'>
    <div>
        <div class='section'>
            <ul class='properties'>
                <li>
                    <label>Claim.Claimant</label>
                    <span class="value">Smith, John</span>
                </li>
                <li>
                    <label>Claim.LossDate</label>
                    <span class="value">04/22/2014</span>
                </li>
                <li>
                    <label>Claim.LossDescription</label>
                    <span class="value">I was injured.</span>
                </li>
            </ul>
        </div>
    </div>
</div>

我正在尝试检索使用jQuery在span标签中填充的文本。

I've try with zero success:

alert($("<label>Claim.Claimant</label>").find("span.value"));

你知道我做错了什么吗?

你应该这样做:

var $yourspan = $('label:contains(Claim.Claimant)').parent().find('span')
基本上

  • 查找包含特定文本的标签
  • 找到它的父
  • 在父元素中搜索span

查看现场演示

查看contains的文档

编辑:

根据这个jsperf测试,Rory的答案确实更性能。

首先,选择器的语法不正确。您希望在选择器中遵循基本的CSS规则,而不是编码的HTML。然后,您可以使用filter()通过文本查找元素。试试这个:

var valueText = $('label').filter(function() {
    return $(this).text() == 'Claim.Claimant';
}).next('span.value').text();
alert(valueText); // = 'Smith, John'

注意filter():contains选择器快得多。

例子小提琴

可以使用.text()

获取span标签的文本值

这将从所有span标签类"value"中获取文本:

$("span.value").text()

如果您想要一个特定的span标签,可以为每个标签分配唯一的id,或者使用索引引用它们:

$($("span.value")[0]).text()