以编程方式更改jQuery单选按钮失败,不删除已检查的属性

时间:2015-09-23 15:53:13

标签: jquery jquery-ui jqueryi-ui-buttonset

我的jQuery Radioset在以编程方式更改radiobutton时不会删除checked-attribute。由于只能通过其自然行为选择一个单选按钮,因此我希望取消选中之前选择的按钮。我在这儿吗?

为了演示它,我创建了一个简单的jsfiddle: http://jsfiddle.net/nL8ksLwt/

HTML:

<div id="radioset">
    <input type="radio" id="174928" name="freq">
    <label value="174928" class="tooltip" for="174928">5A</label>
    <input type="radio" id="176640" name="freq">
    <label value="176640" class="tooltip" for="176640">5B</label>
</div>
<button id="trigger">Trigger Change Event 5A</button>
<button id="trigger2">Trigger Change Event 5B</button>

js:

  $(function () {
      $("#radioset").buttonset();
  })
   $('#trigger').click(function () {
      $("#174928").attr('checked', true);
  });

  $('#trigger2').click(function () {
      $("#176640").attr('checked', true);
  });

我正在使用Firefox。在网页上它确实有效,但是如果你看一下firebug,你会发现checked-attribute仍然存在。这导致我的其他功能出现问题。

主要目标是以编程方式选择另一个单选按钮,以便一次只选择一个按钮(不触发更改事件)。 如何正确地做到这一点?

2 个答案:

答案 0 :(得分:3)

不工作的原因:

  • attr是基于字符串的。
  • prop是基于布尔值的。
  • 所以对于电台,复选框,我们可以使用道具。您可以使用attr。
  • 的其他基于文本的元素

尝试使用道具代替attr it ill work

JsFiddle:http://jsfiddle.net/nL8ksLwt/3/

  $(function() {
    $( "#radioset" ).buttonset();
  })
$('#trigger').click(function(){
    $("#174928").prop("checked", true);
});

$('#trigger2').click(function(){
    $("#176640").prop("checked", true);
});

答案 1 :(得分:1)

您还可以在单​​选按钮上触发点击事件。

  $("#radiobutton").click();

这是fiddle