如何确定具有特定类名的可见元素是否为空

How do I find out if visible elements with a certain class name are empty or not?

本文关键字:元素 是否 何确定      更新时间:2024-06-30

一开始我是这样做的,但后来我意识到这不可行,因为不是所有元素都可见。我的意思不是隐藏,我的意思是它甚至不会出现在DOM中。这整个代码块(减去document.ready部分)对具有6个不同名称的6个字段执行了6次,因此,当6个字段中的任何一个被键入时,它会检查另5个。

$(document).ready(function() {
    $(document.body).on("input", "input[name='count1']", function() {
        if ($(this).val() == '') {
            //do nothing
        } else {
            var count1val = $("#count1").val();
            var count2val = $("#count2").val();
            var count3val = $("#count3").val();
            var count4val = $("#count4").val();
            var count5val = $("#count5").val();
            var count6val = $("#count6").val();
            if (count1val !== '' && count2val !== '' && count3val !== '' && count4val !== '' && count5val !== '' && count6val !== '') {
                //do something
            }
        }
    });
});

因此,我需要查看对于某个类名可见的所有输入是否都是空的。需要使用类名,因为将有多个集合,我需要以相同的方式处理,并且我不希望一个集合干扰其他集合。我尝试了以下操作,但没有成功。

$(document).ready(function() {
    $(document.body).on("input", "input[name='count1']", function() {
        if ($(this).val() == '') {
            //do nothing
        } else {
            if ($(".countmulti:visible").val() !== '') {
                //do something
            }
        }
    });
});

找出一组具有特定类名的可见字段是否全部为空的更好方法是什么。

为了更好地解释可见场;有时仅场1可见,有时场1和2可见,有时1、2和3可见,有时为1、2、3和4可见,有时是1、2,3、4和5可见,有时全部为6可见。

我用另一个问答解决了这个问题;A在stackoverflow上。这是我使用的:

var inputsWithNoValue = $(".countmulti:visible").filter(function() {
    return !this.value.length;
});
if (inputsWithNoValue.length) { // if there are inputs with no value
    alert('something empty');
} else {
    alert('nothing empty');
}

您尝试过console.log($(".countmulti:visible"))吗?它可能是一个数组。它可能返回许多元素,因此您必须使用每个来迭代数组。

答案是反复的。代替:

  if ($(".countmulti:visible").val() !== '') {
        //do something
    }

写入

var res = $(".countmulti:visible");
$.each(res, function( index, value ) {
  if ( res[index].val() !== '' ) //do something
});

问题是,给定的选择器返回许多对象,而不是以前的一个对象。

var inputsWithNoValue = $(".countmulti:visible").filter(function() {
    return !this.value.length;
});
if (inputsWithNoValue.length) { // if there are inputs with no value
    alert('something empty');
} else {
    alert('nothing empty');
}