Javascript jQuery在选择选项时执行某些操作';值不为空/空

Javascript jQuery在选择选项时执行某些操作';值不为空/空,javascript,jquery,Javascript,Jquery,下面是一个场景。假设我在一个页面上有多个(可以是0、1、2、3、4或更多),并且我希望在选项值不等于“或NULL时触发一些代码。jQuery中是否有一个快速启动的方法来查找这个问题?选择项将位于标记中,其类别为class=“variations”,但不存在选择项本身的有用类别或id,因为它们将根据当前页面/产品id动态生成 当一个或另一个不等于“或NULL时,我可以让它工作,但当两个都被选中时,我似乎无法让它启动(如果这有意义的话,当两个都未被选中时,然后再次启动)。您可以尝试此操作 $('.v

下面是一个场景。假设我在一个页面上有多个
(可以是0、1、2、3、4或更多),并且我希望在选项值不等于
NULL
时触发一些代码。jQuery中是否有一个快速启动的方法来查找这个问题?选择项将位于
标记中,其类别为
class=“variations”
,但不存在选择项本身的有用类别或id,因为它们将根据当前页面/产品id动态生成

当一个或另一个不等于
或NULL时,我可以让它工作,但当两个都被选中时,我似乎无法让它启动(如果这有意义的话,当两个都未被选中时,然后再次启动)。

您可以尝试此操作

$('.variations').on('change', 'select', function(){
    if(this.value){
        // do something
    }
});
你可以试试这个

$('.variations').on('change', 'select', function(){
    if(this.value){
        // do something
    }
});

谢赫给出的答案不错,但这是另一种选择:

HTML:


谢赫给出的答案很好,但这是另一种选择:

HTML:


对你的问题有点困惑,但这有什么帮助吗

var $selects = $('.variations > select')

// Attach event handler that will only fire once
$selects.one('change', checkSelectValues);

var checkSelectValues = function($event) {
  var numEmptySelects = 0;
  $selects.each(function(index, element){
    var val = $(element).val();
    if (val === '' || val == null) {
      numEmptySelects++;
    }
  });

  performActionBasedOnNumEmptySelects(numEmptySelects);

  // Re-attach event handler
  $selects.one('change', checkSelectValues);
};

var performActionBasedOnNumEmptySelects = function(numEmpty) {
  // Whatever....
};

对你的问题有点困惑,但这有什么帮助吗

var $selects = $('.variations > select')

// Attach event handler that will only fire once
$selects.one('change', checkSelectValues);

var checkSelectValues = function($event) {
  var numEmptySelects = 0;
  $selects.each(function(index, element){
    var val = $(element).val();
    if (val === '' || val == null) {
      numEmptySelects++;
    }
  });

  performActionBasedOnNumEmptySelects(numEmptySelects);

  // Re-attach event handler
  $selects.one('change', checkSelectValues);
};

var performActionBasedOnNumEmptySelects = function(numEmpty) {
  // Whatever....
};

如果只希望在选择了all或选择了none时发生某些事情,则可以使用以下方法:


如果只希望在选择了all或选择了none时发生某些事情,则可以使用以下方法:


你能提供你的代码吗,最好是在?只需将更改事件绑定到所有的选择,然后在其中检查所有的值。听起来不错,但我该怎么做呢?就像我说的,当1被更改时,我可以让它触发,但当它们都被更改为除“.”以外的值时,则无法触发。@ScottMcGready每次发生任何更改时,事件都会触发。在处理程序内部,检查每个
select
s的值,看看它们是否都被选中。您能提供您的代码吗,最好是在?只需将更改事件绑定到所有选择,然后在其中检查所有值。听起来不错,但我该怎么做呢?就像我说的,当1被更改时,我可以让它触发,但当它们都被更改为除“.”以外的值时,则无法触发。@ScottMcGready每次发生任何更改时,事件都会触发。在处理程序内部,检查每个
select
s的值,以查看它们是否都被选中。
$('.variations').on('change', 'select', function () {
    var allItems = $('.variations select');
    var nonSelectedItems = allItems.filter(function () {
        return $(this).val() === "";
    });

    if (nonSelectedItems.length == 0) {
        console.log('all are selected');
    } else if (nonSelectedItems.length == allItems.length) { 
        console.log('none are selected');   
    } else {
        console.log('some are selected');   
    }
});