2011-04-27 277 views
57

讓我們說我有一個類似這樣的標記:jQuery的 - 從元素中選擇元素

<div id="foo"> 
    ... 
    <span id="moo"> 
    ... 
    </span> 
    ... 
</div> 

,我想選擇#moo。

爲什麼$('#foo').find('span')有效,但$('span', $('#foo'));沒有?

+10

爲什麼不'$( '#哞')'? ;)Btw。它確實工作:http://jsfiddle.net/fkling/k5X2r/ – 2011-04-27 18:15:11

+0

或'$('#foo span')';-) – Capsule 2011-04-27 18:18:41

+0

我不知道爲什麼,但鉤到選定範圍的函數會應用到所有跨越頁面,而不僅僅是一個裏面的#foo :( – Alex 2011-04-27 18:31:01

回答

90

您可以使用任何一個這些

$("#moo") > $("#foo #moo") > $("div#foo span#moo") > $("#foo span") > $("#foo > #moo") 

Take a look

+1

我認爲第三個應該是跨度#moo不是跨度#foo? – xr280xr 2013-07-25 21:51:35

+0

是的。我已經把c orrection – 2013-07-26 04:14:01

34

其實,$( '#身份證',這一點);會在任何後代級別選擇#id,而不僅僅是直接子級。試試這個:

$(this).children('#id'); 

$("#foo > #moo") 

$("#foo > span") 
+0

不會選擇任何東西,因爲元素具有** ID **'moo',而不是類。 – 2011-04-27 18:16:34

+0

值得注意的是'.children()'和'。 find()'是相似的,除了前者只在DOM子樹中向下移動一個層次。 – Kevin 2016-05-26 03:13:50

8

爲什麼不直接使用:

$("#foo span") 

$("#foo > span") 

$('span', $('#foo'));作品在我的機器上的罰款;)

+0

'$($(elementA),'tr#'+ key +'span')'不適用於我(jQuery 1.10 .2) – Cody 2014-07-07 16:34:58

6

看看這裏[從最快的開始] - 查詢元素的子元素

$(document.getElementById('parentid')).find('div#' + divID + ' span.child');

1

您可以使用find選項來選擇另一個元素。例如,要找到ID txtName的在一個特定的div元素,你可以像使用

var name = $('#div1').find('#txtName').val();