多个选择器不使用上下文

我正在尝试选择焦点时使用的一些表单元素:

$('textarea, input, select', '.highlightRow').live('focusin', function(e){ $(this).css("background-color","yellow"); });

但是多个选择器和上下文有问题

当我使用上下文和表单没有.highlightRow我的textarea不改变bgcolor(没关系)但列表中的下一个元素(输入,选择)改变bgcolor(这是错的)

例如: http : //jsfiddle.net/RgEAw/1/

现在只有不那么优雅的解决方

$('.highlightRow input, .highlightRow .highlightRow select, .highlightRow textarea')...

在这种情况下,有没有可能使用这个多选择器和上下文?

根据jQuery doc ,上下文必须是“DOM元素,文档或jQuery”。 它本身不能是字符串选择器。

所以,当你指定这个:

 $('textarea, input, select', '.highlightRow') 

您显然正在尝试指定'.highlightRow'的上下文,这不是指定上下文的文档化方法之一。 在这种特殊情况下,您可以为'.highlightRow'获取单个DOM元素,将其转换为jQuery对象或将其放入实际选择器中。

但是,只有当您传递的对象实际存在时,上下文才会起作用。 如果它不存在,那就像你传递一个NULL上下文,这意味着搜索整个文档,这样它就不会做你想要的。 因此,您只能在选择器实际存在时使用上下文参数。

我建议使用这个:

 $('.highlightRow textarea, .highlightRow input, .highlightRow select') 

这里的工作演示: http : //jsfiddle.net/jfriend00/uzYuQ/ 。