如果此下拉列表的值为" 1"而这个下拉列表的价值是"活性"

时间:2018-01-27 20:55:24

标签: javascript jquery

我无法正确编写此条件。如果#number的值等于" 1"我想将其更改为并且#status_dropdown的值等于"活性"然后做的事情。这就是我到目前为止所做的:

var status = document.getElementById("status_dropdown").value;

$('#number').on('change', function(){
if ($(this).val() == "1" && (status).val() == " Active") {
  $('div[class*="member-"], .amounts').hide();
    $('.member-1, .donation-0').show();
 } else if ($(this).val() == "2") {  
  $('div[class*="member-"]').hide();
    $('.member-2').show();
 } else if ($(this).val() == "3") {  
  $('div[class*="member-"]').hide();
    $('.member-3').show();
 } else if ($(this).val() == "0") {  
  $('div[class*="member-"]').hide();
 }
});

这里是js与它的小提琴: https://jsfiddle.net/jelane20/c11z8xak/

我不确定如何将逻辑运算符与jQuery结合使用,但也可以使用直接的JS解决方案。

2 个答案:

答案 0 :(得分:1)

您在页面就绪时存储状态选择的值。您也可以获取更改事件的价值,而不是(status).val()使用$("#status_dropdown").val()

答案 1 :(得分:0)

这不起作用的原因是你将Vanilla JS与jQuery结合起来。在第一行中,您将状态视为#status-dropdown的值,这在语法上是正常的。

然后您使用该值并将其传递给jQuery $(status),因此它尝试使用状态值的选择器查找元素。如果您只想要一个jQuery解决方案,则可以跳过第一行并将$(status)替换为选择器$('#status-dropdown')

此外,您只需检查状态值一次,因此您的代码正在检查状态是否处于活动状态且初始条件的值是1,但它只检查状态的值$(this)

您可以为每项支票添加&& $('#status-dropdown').val() == "Active"),或者最好先执行该检查:

$('#number').on('change', function() {
  if ($('#status-dropdown').val() === 'Active') {
    if ($(this).val() === "1") {
      $('div[class*="member-"], .amounts').hide();
        $('.member-1, .donation-0').show();
    } else if ($(this).val() === "2") {  
      $('div[class*="member-"]').hide();
        $('.member-2').show();
    } else if ($(this).val() === "3") {  
      $('div[class*="member-"]').hide();
        $('.member-3').show();
    } else if ($(this).val() === "0") {  
      $('div[class*="member-"]').hide();
    }
  }
});

附注:我已将您的==更改为===以进行更有力的检查。