我有一个简单的问题,我为其创建了一些丑陋的代码。
我的问题是需要通过它显示的文字来获取标签,例如:
<div class="editor-label">
<label for="iwantthisid">Test<span class="editor-label-required">* </span>
</label>
所以在这里我想搜索页面(尽可能快)以获得带有text =“Test”的标签。
然后我想从该标签中提取“For”值。
最好的方法是什么。
我知道解决这个问题只是$(element).attr("for")
这是我坚持的第一步!
由于
答案 0 :(得分:3)
使用此
$('label:contains(Test)').attr('for')
答案 1 :(得分:2)
我建议:
$('label').filter(function () {
return this.firstChild.nodeValue.trim() === 'string';
}).attr('for');
如上所述,为了更加确保(如果不需要精确的外壳,并为那些未实现String.trim()
的浏览器提供):
$('label').filter(function () {
return $.trim(this.firstChild.nodeValue).toLowerCase() === 'string';
}).attr('for');
在功能上下文中使用此方法:
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));
这些不同的方法取决于您正在搜索的firstChild
元素的 label
,(根据您当前的HTML做出决定)在您的问题中提供了。)
答案 2 :(得分:0)
只需为标签指定一个ID,如下所示:
<label id="theLabel" for="iwantthisid">Test<span class="editor-label-required">*</label>
并通过$("#theLabel").attr("for")