首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按属性的变量子字符串选择HTML元素

按属性的变量子字符串选择HTML元素
EN

Stack Overflow用户
提问于 2012-07-30 08:29:41
回答 1查看 161关注 0票数 1

我有几组元素,每组元素都与一个特定的数字相关。我想为每个元素添加一个mouseover,将一个类添加到其组中的所有元素,并添加一个mouseout删除该类。只要我给它一个字符串文字,jQuery的attributeStartsWith选择器就能很好地完成这项工作,但我正在尝试编写一个函数来对任何组执行此操作,因此我需要选择一个参数作为子字符串。有没有办法用attributeStartsWith做到这一点,或者我应该尝试一些其他的技术?

这是我的工作原理:

代码语言:javascript
运行
复制
function highlight(numberString)
{ $('p[id^="321"]').addClass("highlighted");  }

我需要用参数numberString替换"321“。下面的代码似乎不能做到这一点。我猜这是因为attributeStartsWith将numberString视为未加引号的单字字符串,而不是变量名。

代码语言:javascript
运行
复制
function highlight(numberString)
{ $('p[id^=numberString]').addClass("highlighted");  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-30 08:31:21

只需插入参数并将其作为字符串引用即可:

代码语言:javascript
运行
复制
function highlight(numberString) {
    $('p[id^=' + numberString + ']').addClass("highlighted");
}

http://jsfiddle.net/g3qHX/

顺便说一句,Javascript没有PHP那样的可变字符串扩展/内插。如果你仔细想想,这是显而易见的,但结转仍然可能发生,导致问题(如果这是你的情况)。

此外,您在选择器中测试的值不需要加引号,除非它包含空格,因此以下内容可能不是必需的,但也不会有什么坏处

代码语言:javascript
运行
复制
function highlight(numberString) {
    $('p[id^="' + numberString + '"]').addClass("highlighted");
}

http://jsfiddle.net/g3qHX/1

注意我添加的"。无论如何,id值中不应该有空格,但如果这与其他属性选择器一起使用,则需要小心。

另一个注意事项是id属性在HTML5之前需要以字母数字开头(不能只是字母数字)。HTML5改变了这一点,但我认为(我的偏好和建议)是,在大多数用例中,应该遵循以前的标准。

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

https://stackoverflow.com/questions/11714161

复制
相关文章

相似问题

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