【问题标题】:jQuery if/else statement when if condition contain or (||) two variablesjQuery if/else 语句当 if 条件包含或 (||) 两个变量时
【发布时间】:2014-09-15 12:16:40
【问题描述】:

我正在尝试获取某些元素的值并将它们放在 <select> 的一个 <option> 列表中,例如: 验证是否检查了收音机以及检查了哪个收音机获取部分元素值并将它们插入<select>作为<option>; 在我的示例中,我有两个部分/面板,可以通过无线电输入进行选择。 我的问题是当我做收音机选择时,因为我使用了类似的东西:

var scheduler = $( "#first-radio:checked" );
var cronos = $( "#second-radio:checked" );

$("#add-button").click( function() {
  if ( scheduler || cronos ) {
                              alert('None of radio options were selected!');
  } else{ 
         alert("else where my code must run"); 
  }
});

如果在按下Add val 按钮时选择了两个复选框之一,通常应该采取 else 警报,而不是一直采取 if 语句并显示 if 警报,我不明白为什么:|

Check fiddle:

【问题讨论】:

    标签: javascript jquery html if-statement


    【解决方案1】:

    jQuery 方法将始终返回真实的 jQuery 对象,因此您的代码将始终执行 if 块。

    此外,检查状态会在运行时发生变化,因此您不能使用在 DOM 初始化时获取的状态 - 您需要检查单击处理程序中单选按钮的当前状态。

    var scheduler = $("#first-radio");
    var cronos = $("#second-radio");
    
    $("#add-button").click(function () {   
        if (scheduler.is(':checked') || cronos.is(':checked')) {
            alert("else where my code must run");
        } else {
            alert('None of radio options were selected!');
        }
    });
    

    演示:Fiddle

    【讨论】:

    • $( "#first-radio:checked" ) 和 (scheduler.is(':checked') 有什么区别?
    • $( "#first-radio:checked" ) 将返回一个对象。 scheduler.is(':checked') 将返回一个布尔值。
    • 问题是 $(SELECTOR) 总是返回一个 jQuery 对象,即使它不存在所以你的 if 条件总是为真。
    猜你喜欢
    • 2013-03-09
    • 2016-02-29
    • 2021-12-08
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多