代码不';当用Jquery替换Javascript时,我什么都不做

代码不';当用Jquery替换Javascript时,我什么都不做,javascript,jquery,Javascript,Jquery,我有以下javascript代码: var right = document.getElementById("true").checked; var wrong = document.getElementById("false").checked; if (right){ answer += 100; } 我想用jQuery替换Javascript,所以我替换了这一行: var right = document.getElementById("true").checked; 为此:

我有以下javascript代码:

var right = document.getElementById("true").checked;
var wrong = document.getElementById("false").checked;

if (right){
    answer += 100;
}
我想用jQuery替换Javascript,所以我替换了这一行:

var right = document.getElementById("true").checked;
为此:

var right = $('#true')[0].attr('checked');  
我还下载了jQuery文件并将其添加到我的HTML中:

<script src="jquery-1.11.2"></script>
但它仍然不起作用。

试试看

var right = $('#true').attr('checked');  
而不是

var right = $('#true')[0].attr('checked');  
你应该使用

var right = $('#true').prop('checked');  
因为
$('#true')[0]
返回DOM元素,并且
.attr()
使用jQuery对象。

试试看

var right = $('#true').attr('checked');  
而不是

var right = $('#true')[0].attr('checked');  
你应该使用

var right = $('#true').prop('checked');  

因为
$('#true')[0]
返回DOM元素,而
.attr()
与jQuery对象一起工作。

问题在于jQuery对象上的
[0]
访问器返回本机DomeElement。这没有
attr()
方法,因此如果检查控制台,很可能会看到错误

在您的情况下,您应该只调用选择器生成的对象上的
attr()
(或者更好的是,
prop()
)。另外,不要忘记将代码包装在document.ready处理程序中。试试这个:

$(function() {
    var right = $("#true").prop('checked');
    var wrong = $("#false").prop('checked');

    if (right){
        answer += 100;
    }
});

问题是jQuery对象上的
[0]
访问器返回本机domeElement。这没有
attr()
方法,因此如果检查控制台,很可能会看到错误

在您的情况下,您应该只调用选择器生成的对象上的
attr()
(或者更好的是,
prop()
)。另外,不要忘记将代码包装在document.ready处理程序中。试试这个:

$(function() {
    var right = $("#true").prop('checked');
    var wrong = $("#false").prop('checked');

    if (right){
        answer += 100;
    }
});

当使用jQuery 1.9+时,attr('checked')获取复选框的初始状态,当其状态更改时,您需要使用prop()函数

$('#true').prop('checked');

当使用jQuery 1.9+时,attr('checked')获取复选框的初始状态,当其状态更改时,您需要使用prop()函数

$('#true').prop('checked');

ID是唯一的标识符。HTML中应该只有一个唯一的ID。也就是说,你不需要把数组标识符放在那里。这样做:

var right = $('#true').attr('checked');

ID是唯一的标识符。HTML中应该只有一个唯一的ID。也就是说,你不需要把数组标识符放在那里。这样做:

var right = $('#true').attr('checked');

@dev null已更新!:)@dev null已更新!:)你能告诉OP为什么他应该使用
.prop
而不是
.attr
@Rory,我应该在Javascript函数中创建这个jquery函数吗?就像我在问题中说的那样?(请参见编辑)@RileyWillow啊,如果你是从函数执行代码,你不需要
$(function(){})
包装器。你能告诉OP为什么他应该使用
.prop
而不是
.attr
@Rory,我应该在Javascript函数中创建这个jquery函数吗?就像我在问题中说的那样?(请参见编辑)@RileyWillow啊,如果您是从函数执行代码,您不需要
$(function(){})
包装器。