首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问标签的"for“属性的id

访问标签的"for“属性的id
EN

Stack Overflow用户
提问于 2011-03-06 05:26:04
回答 3查看 3.2K关注 0票数 1

我有一个JSF应用程序,它生成一个带有标签的页面:

代码语言:javascript
运行
复制
<label for="_idJsp0:question" class="left">Question</label>

然后在DOM中的其他地方是组件:

代码语言:javascript
运行
复制
<td><textarea rows="7" cols="25" id="_idJsp0:question" name="_idJsp0:question">My Question.</textarea></td>

对于Selenium,我正在使用jQuery构建一个自定义位置策略,因此我的问题是如何返回标签的" For“属性的ID?我可以在标签上使用.attr("for")来返回ID的字符串,但是我不知道如何真正返回格式正确的选择器输出。我尝试过这样的方法:

代码语言:javascript
运行
复制
var inner = "label:contains('Question')";
$('#' + $(document).find(inner).attr('for'));

任何帮助都将不胜感激!

EN

回答 3

Stack Overflow用户

发布于 2011-03-06 05:33:21

是id上的冒号阻止了选择器的工作。冒号后面的文本被解释为元类,而不是id的一部分。

您必须转义选择器中的冒号:

代码语言:javascript
运行
复制
$('#' + $(document).find(inner).attr('for').replace(':', '\\:'))

为了完整性,如果您想转义选择器中标识符中的任何特殊字符,您可以使用如下所示的替换

代码语言:javascript
运行
复制
id.replace(/([!"#$%&'\(\)\*\+,\.\/:;<=>\?@\[\\\]\^`\{\|\}~])/g, '\\$1')
票数 1
EN

Stack Overflow用户

发布于 2011-03-06 05:36:37

您需要转义特殊的jQuery选择器。尝试如下所示:

代码语言:javascript
运行
复制
function jqescape(str) { 
    return str.replace(/[#;&,\.\+\*~':"!\^\$\[\]\(\)=>|\/\\]/g, '\\$&'); 
}
var inner = "label:contains('Question')";
$('#' + jqescape( $(document).find(inner).attr('for') ) );
票数 0
EN

Stack Overflow用户

发布于 2011-03-06 05:40:17

这将打印“我的问题”:

代码语言:javascript
运行
复制
alert($("textarea[id='" + 
    $("label:contains('Question')").attr('for') + 
    "']").html());

它查找的是[id='xxx']而不是#xxx,因为ID中有一个:,但:jQuery selectors中是一个特殊字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5206890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档