这对我来说代码工作正常,但仅使用默认的HTML单选按钮控件

$('.block1').on("click", function(event){
  $('.block1').prop('checked', false);
  $(this).prop('checked', true);
});


http://sfiddle.net/bAhmed/zNq9R
但是当我通过$(“。col-lg-4”)。buttonset();更改单选按钮的默认UI时。

那么上面的代码对我不起作用。当它改变行为或应用jquery-ui.css和jquery.js的其他一些默认类时

最终目标是取消选中.block1类的所有其他单选按钮,但在应用.buttonset()之后

最佳答案

从提供的信息中很难分辨出您的问题到底是什么,但是在我看来,您的问题可能是由jQuery UI的buttonset函数进行的DOM重排引起的。

看来您之前迷上了直接在单选按钮输入元素上触发的'click'事件。调用buttonset()后,jQuery UI会折叠在其上注册了单击处理程序的输入元素,使它们不可单击。因此,如果要在调用buttonset函数之后挂接到按钮集中的click事件,则必须在调用buttonset函数之后在其他元素集上注册处理程序。我建议使用jQuery UI创建的标签元素。您的代码可能看起来像这样:

$(function() {
  $(".col-lg-4")
      .buttonset()
      .find('label.ui-button')
      .on('click', function() {
    $('.block1').prop('checked', false).button('refresh');
    var targetId = '#' + $(this).attr('for');
    $(targetId).prop('checked', true).button('refresh');
  });
});


希望有帮助!

07-24 16:59