为什么.next()给我’undefined’

为什么.next()返回’undefined’? http://jsfiddle.net/radek/sD6JB/2/

HTML

      

javascript + jQuery

 $(document).ready(function(){ $('button[type=button]').click(function(){ var params = $(this).val(); document.getElementById("results").innerHTML+= "
"+params.split('|')[0]+" - " + params.split('|')[1]+" - " + $(this).next().checked; }); });

jQuery对象没有checked属性。

你可以……

(a)用[0]get(0)标本机DOM元素。

(b)访问prop('checked') (> =仅限jQuery 1.6。)

(c)使用is(':checked')

那是因为你在jQuery对象而不是DOM元素上调用.checked 。 如果你想调用.checked你需要从jQuery集合中获取DOM元素。

只需将该行更改为以下内容即可

 $(this).next().get(0).checked 

固定小提琴: http : //jsfiddle.net/sD6JB/3/

它是undefined因为当你在click函数中时$(this) set只保存一个元素,在其上定义click属性。 所以集合中没有下一个兄弟。

说明:

$('button[type=button]')包含type=button属性的所有button元素。 在它们上定义clickhandler时,为每个创建一个函数,在该函数中, this将是您定义事件处理程序的元素。 当你使用$(this)你创建了一个jQuery包装器集,它只包含这个元素。 .next()用于选择集合中的下一个兄弟,但您的集合只有一个元素。

解:

$(本).siblings( “输入”)是。( “:勾选”)

顺便说一下,使用checked也是一个问题,但是你的初始未定义问题的原因是上面的。 请改用.is(":checked")