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

Jquery 按属性的变量子字符串选择HTML元素,jquery,Jquery,我有几组元素,每组都与一个特定的数字有关。我想给每个元素添加一个mouseover,将一个类添加到其组中的所有元素中,并给每个元素添加一个mouseout,删除该类。jQuery的attributeStartsWith选择器在这方面非常有效,只要我给它一个字符串文字,但我正试图编写一个函数来处理任何组,所以我需要选择一个参数作为子字符串。有没有办法用attributeStartsWith实现这一点,或者我应该尝试其他技术 以下是我的有效方法: function highlight(numberS

我有几组元素,每组都与一个特定的数字有关。我想给每个元素添加一个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");  }

只需插入并引用参数作为字符串:

function highlight(numberString) {
    $('p[id^=' + numberString + ']').addClass("highlighted");
}

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

此外,您在选择器中测试的值不需要被引用,除非它有一个空格,因此以下内容可能不需要,但不会有任何影响:

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


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

啊,这非常有效。我把最里面的单引号误读为“打开-关闭”,而不是“关闭-打开”。非常感谢!
function highlight(numberString) {
    $('p[id^="' + numberString + '"]').addClass("highlighted");
}