1. 程式人生 > >在使用jquery時attr("checked") 返回checked或undefined 原因以及解決方法

在使用jquery時attr("checked") 返回checked或undefined 原因以及解決方法

問題:在使用jquery時attr("checked") 返回checked或undefined ?

演示程式碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../js/jquery.js"></script>
</head>
<body>
<div><input type="checkbox"id="box1"
/></div> <div><input type="checkbox" id="box2"/></div> </body> <script> $("#box1").click(function(){ console.log($(this).attr("checked")); }); </script> </html>

執行結果如下:


一、思考:

1、既然checked是屬性,那麼根據attr()肯定可以獲得checked屬性的值;

2、我們想象中的樣子是,在選中時應該返回true ,在取消時應該返回false;

3、但是通過attr()方法返回的是undefined結果;

4、但當我們使用js中的this.checked的時候,返回的結果就是我們想象中的樣子

二、推論 :jquery中的attr()方法不能獲得checked屬性的值;

三、驗證:百度查詢發現很多學者出現了相同的問題

原因:

版本的升級引起的問題。

四、解決辦法:使用prop()方式設定或者更改checked的值

程式碼如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title
> <script src="../js/jquery.js"></script> <style> input{ margin-top: 200px; width: 30px; height: 30px; } </style> </head> <body> <div><input type="checkbox"id="box1"/></div> <div><input type="checkbox" id="box2"/></div> </body> <script> $("#box1").click(function(){ $("#box2").prop("checked",$(this).prop("checked")) }); </script> </html>