【问题标题】:JQuery buttonset("refresh") fails after the second time with radiobuttonsJQuery buttonset("refresh") 在第二次使用单选按钮后失败
【发布时间】:2014-02-20 11:29:42
【问题描述】:

我在我的项目中使用以下 Jquery 按钮集:

<div id="TR1_Mode">
    <input type="radio" id="TR1_Mode_Dif" name="TR1_Mode_radio" value="Mode_Dif" ><label for="TR1_Mode_Dif">Differentiation</label>
    <input type="radio" id="TR1_Mode_Int" name="TR1_Mode_radio" value="Mode_Int" checked="checked"><label for="TR1_Mode_Int">Integration</label>
</div>

使用以下代码以编程方式更改“已检查”状态(在控制台中尝试过):

$('[name="TR1_Mode_radio"][value="Mode_Dif"]').attr("checked", false);
$('[name="TR1_Mode_radio"][value="Mode_Int"]').attr("checked", true);
$('#TR1_Mode').buttonset("refresh");

它可能会起作用,但是在反过来做同样的事情之后:

$('[name="TR1_Mode_radio"][value="Mode_Dif"]').attr("checked", true);
$('[name="TR1_Mode_radio"][value="Mode_Int"]').attr("checked", false);
$('#TR1_Mode').buttonset("refresh");

选中的按钮将变为未选中状态,但未选中的按钮不会变为选中状态。我是否遗漏了什么或者这是 jquery 中的不当行为?

检查按钮似乎表现良好,但它们并不能实现相同的目的。

我使用 Chrome (32.0.1700.107 m) 和 Firefox (27.0.1) 进行了测试,并使用最新的 Jquery 版本进行了测试:jquery-2.0.3.js 和 jquery-1.10.2.js

【问题讨论】:

  • 尝试 $('[name="TR1_Mode_radio"][value="Mode_Int"]').removeAttr("checked") 而不是 attr("checked", false)

标签: javascript jquery html refresh radio


【解决方案1】:

$.prop$.attr 之间存在差异。具体来说,attr相当于重写html,而prop实际上是修改了DOM对象的值。所以,这会起作用:

$('[name="TR1_Mode_radio"][value="Mode_Dif"]').prop("checked", true);
$('[name="TR1_Mode_radio"][value="Mode_Int"]').prop("checked", false);

否则这会起作用

$('[name="TR1_Mode_radio"][value="Mode_Dif"]').attr('checked', 'checked');
$('[name="TR1_Mode_radio"][value="Mode_Int"]').removeAttr('checked');

您在网上找到的示例可能会令人困惑,因为旧版本的 jQuery (attr 方法,在这两种行为之间的行为会有些不一致。

就其价值而言,我个人认为prop 会带来更具表现力和更易理解的代码。

【讨论】:

  • 太好了,马特!非常感谢,这很好用(只是尝试了“道具”,因为我更喜欢这种风格)。我错过了有关此类事情的文档-如何从控件中检索值并再次设置它们。通常我希望在控件的 API 中找到它,但这些都非常渺茫。关于此类信息,您对我有什么提示吗?非常感谢 :-) 并竖起大拇指!
  • 有时从 codeacademy.com 之类的课程中学习可能会很有用。如果这个答案让您满意,请采纳。
猜你喜欢
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 2017-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多