我有几组元素,每组元素都与一个特定的数字相关。我想为每个元素添加一个mouseover,将一个类添加到其组中的所有元素,并添加一个mouseout删除该类。只要我给它一个字符串文字,jQuery的attributeStartsWith选择器就能很好地完成这项工作,但我正在尝试编写一个函数来对任何组执行此操作,因此我需要选择一个参数作为子字符串。有没有办法用attributeStartsWith做到这一点,或者我应该尝试一些其他的技术?
这是我的工作原理:
function highlight(numberString)
{ $('p[id^="321"]').addClass("highlighted"); }我需要用参数numberString替换"321“。下面的代码似乎不能做到这一点。我猜这是因为attributeStartsWith将numberString视为未加引号的单字字符串,而不是变量名。
function highlight(numberString)
{ $('p[id^=numberString]').addClass("highlighted"); }发布于 2012-07-30 08:31:21
只需插入参数并将其作为字符串引用即可:
function highlight(numberString) {
$('p[id^=' + numberString + ']').addClass("highlighted");
}http://jsfiddle.net/g3qHX/
顺便说一句,Javascript没有PHP那样的可变字符串扩展/内插。如果你仔细想想,这是显而易见的,但结转仍然可能发生,导致问题(如果这是你的情况)。
此外,您在选择器中测试的值不需要加引号,除非它包含空格,因此以下内容可能不是必需的,但也不会有什么坏处
function highlight(numberString) {
$('p[id^="' + numberString + '"]').addClass("highlighted");
}http://jsfiddle.net/g3qHX/1
注意我添加的"。无论如何,id值中不应该有空格,但如果这与其他属性选择器一起使用,则需要小心。
另一个注意事项是id属性在HTML5之前需要以字母数字开头(不能只是字母数字)。HTML5改变了这一点,但我认为(我的偏好和建议)是,在大多数用例中,应该遵循以前的标准。
https://stackoverflow.com/questions/11714161
复制相似问题