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');
}
});