2009-06-09 118 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 
});