更改jquery版本时代码不起作用

时间:2014-02-17 11:58:40

标签: jquery

使用jsfiddle上给出的示例代码,单击一个复选框取消选中所有其他复选框工作正常,但是当我将jquery版本更改为1.10.1时,它不起作用,任何解决方案

 $(".chb").each(function(){
      $(this).change(function(){
        $(".chb").attr('checked',false);
        $(this).attr('checked',true);
     });
  });

这是链接

http://jsfiddle.net/44Zfv/

3 个答案:

答案 0 :(得分:2)

版本正在从1.5.2切换到1.10。在jQuery 1.6之后,建议使用.prop()代替.attr()

$(".chb").each(function(){
   $(this).change(function(){
       $(".chb").prop('checked',false);
       $(this).prop('checked',true);
   });
});

更好的解决方案是使用单选按钮,这将为您提供所需的行为,而无需任何其他脚本。

<label><input type="radio" name="cb" class="chb" /> Radio1</label>
<label><input type="radio" name="cb" class="chb" /> Radio2</label>
<label><input type="radio" name="cb" class="chb" /> Radio3</label>
<label><input type="radio" name="cb" class="chb" /> Radio4</label>

JS小提琴: http://jsfiddle.net/44Zfv/292/

答案 1 :(得分:1)

你好muzaffar尝试道具而不是attr

$(".chb").each(function()
    {
    $(this).change(function()
    {
    $(".chb").prop('checked',false);
    $(this).prop('checked',true);
    });
 });

答案 2 :(得分:1)

由于您没有更改属性,但属性使用jQuery的prop方法。这适用于版本1.10 +

$(".chb").each(function(){
    $(this).change(function(){
        $(".chb").prop('checked',false);
        $(this).prop('checked',true);
    });
});

属性和属性之间的区别

http://www.w3.org/TR/SVGTiny12/attributeTable.html

属性通常由HTML定义,而属性由DOM定义。对于某些元素,属性和属性反映相同(例如元素的id)。显示DOM交互的好方法如下:

<input type="text" value="some value">

此元素有两个属性(typetext)。当浏览器解析文档时,它将为具有属性typevalue的特定元素创建一个对象。如果您随后在其中写入内容,则会影响元素value属性。尝试检索value时,您可以更好地发现差异:

input.getAttribute('value') // -> will return the inital value: "some value"
input.value // -> will return the object's value property (the text you've entered)