3

我有一个带有多个无线电输入的 jquery 移动表单,带有选项“DS”、“NO”和“YES”。我希望当我单击一个按钮时,它会模拟单击所有单选按钮的“是”选项。

我使用这段代码:

$("#btn-all-yes").click(function(){
    $(".replay-yes").each(function(index, element){
        $(element).trigger("click");                  
        //$(element).click();       
    });
});

但是我需要在按钮中单击两次才能达到预期的效果。如果我将 '$(element).trigger("click")' 行两次,它可以工作,但我认为它应该与对 click 事件的一次调用一起工作。

您可以在http://jsfiddle.net/qwLPH/7/查看所有代码

4

2 回答 2

4

您需要使用更改其状态.prop,然后刷新它.checkboxradio('refresh')

工作演示

更新- 取消选中其他按钮

$("#btn-all-yes").click(function () {
 $('[data-role="controlgroup"]').find("[type=radio]").each(function () {
  if ($(this).hasClass('replay-yes')) {  
   $(this).prop('checked', true).checkboxradio("refresh");
  } else {
     $(this).prop('checked', false).checkboxradio("refresh");
    }
 });
});

旧答案

$("#btn-all-yes").click(function(){
 $(".replay-yes").each(function(index, element){
    $(element).prop('checked', true).checkboxradio("refresh");                  
 });
});
于 2013-04-04T09:08:37.710 回答
4

尝试初始化点击页面加载:

$(".replay-yes").each(function (index, element) {
    $(element).trigger("click");
    //$(element).click();       
}).click();
//-^^^^^^^----------this way

在这里试用小提琴

于 2013-04-04T10:06:26.540 回答