我在Project中使用了以下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中的错误行为?
Checkbuttons似乎表现良好,但它们没有达到相同的目的。
我使用Chrome(32.0.1700.107 m)和Firefox(27.0.1)对此进行了测试,并使用最新的Jquery版本对其进行了测试:jquery-2.0.3.js和jquery-1.10.2.js
答案 0 :(得分:0)
$.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(&lt; 1.6)只有一个attr
方法,这两种行为之间的行为会有些不一致。
为了它的价值,我个人认为prop
会带来更具表现力和可理解性的代码。