2012-03-02 75 views
1

我使用一些jQuery来突出显示表单域。但不是输入字段本身被突出显示,但它的父母。我想指定那些父母。如何概括一个jQuery选择器?

这里父DIV和正常工作

$("div input").focus(function() { 
     $(this).parent().addClass("focus"); 
}); 

但我想指定父“TD”太喜欢这

$("div,td input").focus(function() { 
     $(this).parent().addClass("focus"); 
}); 

但是,这是行不通的。只有td字段获得焦点属性!任何想法如何处理这个?

+0

在哪方式不起作用?你的HTML是什么样的? – Jon 2012-03-02 14:31:24

+0

我编辑了我的问题。 TD获得重点,但不是! – 2012-03-02 14:32:59

回答

4

逗号将完全分开两个选择器;你需要指定input两次:

$('div input, td input').focus(function() { 
    $(this).parent().addClass("focus"); 
}); 

另外,如果你没有很多<input> s表示匹配这个标准,你可以把它一点点整洁:

$('input').focus(function() { 
    $(this).parent('div, td').addClass('focus'); 
}); 
1

你必须记住与,你创建一个完整的新选择器!

您正在寻找

$('div input, td input').focus(function() { 
     $(this).parent().addClass("focus"); 
}); 
1

如果你是针对所有输入字段父,那么你可以做这样的事情: -

$('input').focus(function() { 
     $(this).parent().addClass('focus'); 
}); 
1

你应该使用子选择:

$("div > input, td > input") 
.focus(function() { 
    $(this).parent().addClass("focus"); 
}) 
.blur(function() { 
    $(this).parent().removeClass("focus"); 
}); 
0
$('input').parent('td').addClass('focus'); 
1

我认为这个问题是您选择divtd input而不是div inputtd input。逗号用作选择器的分隔符。

您可以使用下面的,如果你没有任何其他input领域:

$("input") 

,或者如果您需要限制到divtd则:

$("div input, td input"); 
0
$('td input').add().parent().doSOmething() 
+0

指定'a:has(b)b'没有意义,它相当于'a b'。 – Ryan 2012-03-02 14:41:55

+0

真的,我从td开始,在实现OP想要两个元素之前 – charlietfl 2012-03-02 14:45:58