2012-03-02 31 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