2009-06-09 119 views
2

東西是我的情況很尷尬......我有這樣的事情:jQuery選擇器錯誤?由選擇與簡單的選擇和發現()

<div id="selector"> 
    <input type='radio' /> 
    <input type='radio' /> 
    <input type='radio' /> 
</div> 

如果我使用$("#selector input[type=radio]")所有三個元素被發現,但如果我用$("#selector").find("input[type=radio]")甚至find("input")只發現第一個。

這是jQuery中的錯誤嗎?我沒有正確使用find()嗎?

澄清:我想使用find()來獲得所有的輸入,但是我嘗試的任何東西只能找到第一個。

編輯:我使用jQuery 1.3.2

+0

與許多其他JavaScript框架不同,當您執行諸如$('input')的搜索時,jQuery不會按ID獲取元素。你需要在ID前添加#:$('#selector') – Blixt 2009-06-09 12:03:50

+0

我修正了這個例子......這是一個錯字。 – Dan 2009-06-09 12:12:56

+0

。什麼瀏覽器? – 2009-06-09 13:08:27

回答

0

嘗試

$( 「#選擇」)找到( 「輸入[類型=電臺]」)

+0

這就是我正在使用的,對不起的例子:) – Dan 2009-06-09 12:02:08

2

你真正想要的。是:

$("#selector > :radio") 

至於爲什麼你要只有一個,我需要查看通過正在運行,因爲找到()在一個不會停止的實際代碼,並會發現所有的比賽,因此它可能是你以後如何使用它是個問題。

+0

我也試圖在螢火蟲控制檯,這兩個命令返回不同的結果:複合選擇器返回所有,find()返回只有第一個。 – Dan 2009-06-09 12:16:21

-3

$( 「#選擇器」)。兒童( 「輸入[@類型=無線電]」)

1

兩個代碼片段應當返回相同的結果。

你是說當你運行下面的代碼時,第一個提示會顯示「3」,第二個提示「1」?

var a = $("#selector input[type=radio]"); 
var b = $("#selector").find("input[type=radio]"); 

alert(a.length); 
alert(b.length); 

您能否驗證一下?同樣的結果

0

See here

這三個回報!

$(function() { 
    console.log($("#selector input[type=radio]"));   // 3 
    console.log($("#selector").find("input[type=radio]")); // 3 
    console.log($("#selector").find("input"));    // 3 
});