jQuery按文本获取标签

时间:2013-11-18 14:44:22

标签: jquery jquery-selectors label selector

我有一个简单的问题,我为其创建了一些丑陋的代码。

我的问题是需要通过它显示的文字来获取标签,例如:

    <div class="editor-label">
    <label for="iwantthisid">Test<span class="editor-label-required">*                </span>

    </label>

所以在这里我想搜索页面(尽可能快)以获得带有text =“Test”的标签。

然后我想从该标签中提取“For”值。

最好的方法是什么。

我知道解决这个问题只是$(element).attr("for")这是我坚持的第一步!

由于

3 个答案:

答案 0 :(得分:3)

使用此

$('label:contains(Test)').attr('for')

答案 1 :(得分:2)

我建议:

$('label').filter(function () {
    return this.firstChild.nodeValue.trim() === 'string';
}).attr('for');

Simple demo

如上所述,为了更加确保(如果不需要精确的外壳,并为那些未实现String.trim()的浏览器提供):

$('label').filter(function () {
    return $.trim(this.firstChild.nodeValue).toLowerCase() === 'string';
}).attr('for');

Simple demo

在功能上下文中使用此方法:

function getLabelByText(needle, caseSensitive) {
    var str;
    return $('label').filter(function(){
        str = $.trim(this.firstChild.nodeValue);
        return caseSensitive ? str === needle : str.toLowerCase() === needle.toLowerCase();
    });
}

console.log(getLabelByText('Test',false));

Simple demo

这些不同的方法取决于您正在搜索的firstChild元素的 label ,(根据您当前的HTML做出决定)在您的问题中提供了。)

答案 2 :(得分:0)

只需为标签指定一个ID,如下所示:

<label id="theLabel" for="iwantthisid">Test<span class="editor-label-required">*</label>

并通过$("#theLabel").attr("for")

获取值