为什么.next()会返回'undefined'? http://jsfiddle.net/radek/sD6JB/2/
html
<button value="login|basic" class="square_button button_background" type="button"> run </button>
<input name="restore" title="restore before ant run" type="checkbox">
<button value="test|advanced" class="square_button button_background" type="button"> run </button>
<input name="restore" title="restore before ant run" type="checkbox">
<button value="best|4444" class="square_button button_background" type="button"> run </button>
<input name="restore" title="restore before ant run" type="checkbox">
<div id='results'/>
javascript + jQuery
$(document).ready(function(){
$('button[type=button]').click(function(){
var params = $(this).val();
document.getElementById("results").innerHTML+=
"<BR>"+params.split('|')[0]+" - "
+ params.split('|')[1]+" - "
+ $(this).next().checked;
});
});
答案 0 :(得分:5)
jQuery对象没有checked
属性。
你可以......
(a)使用[0]
或get(0)
订阅原生DOM元素。
(b)访问prop('checked')
(&gt; =仅限jQuery 1.6。)
(c)使用is(':checked')
。
答案 1 :(得分:2)
那是因为你在jQuery对象而不是DOM元素上调用.checked
。如果你想调用.checked
,你需要从jQuery集合中获取DOM元素。
只需将该行更改为以下内容即可
$(this).next().get(0).checked
答案 2 :(得分:1)
它是 undefined
因为,当您在click
函数$(this)
时,只有一个元素,您可以在其上定义click
属性。所以集合中没有下一个兄弟。
<击>的说明:强> 撞击>
$('button[type=button]')
包含具有button
属性的所有type=button
元素。
当您在它们上定义clickhandler时,您可以为每个函数创建一个函数,并且在该函数中this
将是您定义事件处理程序的元素。
当你使用$(this)
时,你创建了一个jQuery包装器集,它只包含这个元素。
.next()
用于选择集合中的下一个兄弟,但您的集合只有一个元素。
<击>的解决方案:强> 撞击>
$(this).siblings(“input”)。is(“:checked”)
顺便说一下,使用checked也是一个问题,但是你的初始未定义问题的原因如上所述。
请改用.is(":checked")
。