检查任何具有某个类的元素是否为空
我的页面包含这样的多个元素:
<span class="field-validation-valid text-danger" data-valmsg-for="CcInfo.CcCheck" data-valmsg-replace="true"></span>
<span class="field-validation-valid text-danger" data-valmsg-for="CcInfo.CcCheck" data-valmsg-replace="true">Something went wrong</span>
<span class="field-validation-valid text-danger" data-valmsg-for="CcInfo.CcCheck" data-valmsg-replace="true"></span>
现在,我想用JQuery检查这些元素是否包含文本。 所以在这种情况下,这是真的,因为第二个元素包含“出错了”。
我试过了:
if (!$(".field-validation-valid text-danger").is(':empty')) {
// do work
}
但显然这并不容易。
如何实现这一目标?
您可以使用jQuery.filter()
函数根据自定义条件过滤元素。 以下示例中的条件是元素具有一些非空白文本。
$(function() {
var $notEmptySpans = $(".field-validation-valid.text-danger").filter(function() {
return $(this).text().match(/S/) !== null;
});
console.log($notEmptySpans);
if ($notEmptySpans.length > 0) {
console.log($notEmptySpans.length + " non-empty spans found");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<span class="field-validation-valid text-danger" data-valmsg-for="CcInfo.CcCheck" data-valmsg-replace="true">Something went wrong</span>
<!-- the following are considered empty -->
<span class="field-validation-valid text-danger" data-valmsg-for="CcInfo.CcCheck" data-valmsg-replace="true"></span>
<span class="field-validation-valid text-danger" data-valmsg-for="CcInfo.CcCheck" data-valmsg-replace="true"> </span>
你需要检查是否有一些内容然后检查,也是你的选择器有问题应该是.field-validation-valid.text-danger
if (!$(".field-validation-valid.text-danger").html().trim().length) {
// do work
}
如果检查元素具有[space]
作为其内容(如<span> </span>
,则空选择器将失败
你可以
if ($(".field-validation-valid.text-danger").not(':empty').length) {
// do work
}
length
说明:检查jQuery中是否存在元素
另请注意,您需要单独列出课程。 您的示例在类名之间有空格,导致它尝试选择标签名称<text-danger>