【问题标题】:jquery mobile trigger click doesn't work the first timejquery mobile trigger click第一次不起作用
【发布时间】:2013-04-04 08:44:32
【问题描述】:

我有一个带有多个无线电输入的 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/看到所有代码

【问题讨论】:

  • 你的小提琴工作正常......??
  • @MohammadAdil 它在第二次点击时起作用。

标签: jquery-mobile jquery


【解决方案1】:

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

Working demo

更新 - 取消选中其他按钮

$("#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");                  
 });
});

【讨论】:

  • thx omar,但如果我之前检查了其他选项,当我点击“检查所有'YES'”时,它会检查“YES”但旧选项不要取消选中
  • @CarlosCorralCarvajal 例如,如果“否”被选中,您想取消选中它们吗?
  • 是的,我想在我点击按钮时是否选中任何其他选项,只选中“是”选项
  • @CarlosCorralCarvajal 我会尽快为您解决问题。
【解决方案2】:

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

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

Tryout in fiddle here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多