我正在尝试选择焦点时使用的一些表单元素:
$('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')...
在这种情况下是否有可能使用这个多选择器和上下文?
答案 0 :(得分:4)
根据jQuery doc,上下文必须是“DOM元素,文档或jQuery”。它本身不能是字符串选择器。
所以,当你指定:
$('textarea, input, select', '.highlightRow')
您显然正在尝试指定'.highlightRow'
的上下文,这不是指定上下文的文档化方法之一。在这种特殊情况下,您可以为'.highlightRow'
获取单个DOM元素,将其转换为jQuery对象或将其放入实际选择器中。
但是,如果您传递的对象实际存在,则上下文将仅起作用。如果它不存在,那就像你传递一个NULL上下文,这意味着搜索整个文档,这样它就不会做你想要的。因此,您只能在选择器实际存在时使用上下文参数。
我建议使用这个:
$('.highlightRow textarea, .highlightRow input, .highlightRow select')
此处的演示演示:http://jsfiddle.net/jfriend00/uzYuQ/。