检查当前匹配元素的值是否为空或null或未定义,并将boolVar设置为true

时间:2014-11-26 17:05:41

标签: javascript jquery

我有这个HTML表格,我需要查找.has_paises是否有文字。例如,在下面的代码中,对于第一个tr条件将为真,因为$(".has_paises").text()应该返回某些文本但是对于第二个tr条件将为false相同的代码将返回空或null或未定义或任何.text()返回。

<table id="contenedorFabricantes" style="" class="table table-condensed">
    <thead>
        <tr class="tableHead">
            <th><input type="checkbox" name="toggleCheckboxFabricantes" id="toggleCheckboxFabricantes"></th>
            <th>Fabricante</th>
            <th>Dirección</th>
            <th>País</th>
            <th>Teléfono</th>
        </tr>
    </thead>
    <tbody id="fabricanteBody">
        <tr>
            <td><input type="checkbox" value="1"></td><td>Dist1</td>
            <td>Direccion</td>
            <td class="has_pais" id="td-1">Some text</td>
            <td>999999</td>
            <td><a data-backdrop="static" data-target="#addPaisesFabricante" data-toggle="modal" id="1" class="editable-pais" href="#"><i title="" data-placement="top" data-toggle="tooltip" class="fa fa-plus-circle" data-original-title="Agregar países"></i></a></td>
        </tr>
        <tr>
            <td><input type="checkbox" value="1"></td><td>Dist2</td>
            <td>Direccion</td>
            <td class="has_pais" id="td-2"></td>
            <td>999999</td>
            <td><a data-backdrop="static" data-target="#addPaisesFabricante" data-toggle="modal" id="2" class="editable-pais" href="#"><i title="" data-placement="top" data-toggle="tooltip" class="fa fa-plus-circle" data-original-title="Agregar países"></i></a></td>
        </tr>
    </tbody>
</table>

我需要在tr中遍历#fabricanteBody,并查找至少有一个匹配的元素为空 null 或< strong> undefined 如果这是真的那么将boolVar设置为true所以我稍后会检查我的代码,如果var是true或false,那么我想这样做:

var hasFab = $("#fabricanteBody").find(".has_pais"),
    boolVar = false;

hasFab.forEach(function(value, index, array){
   // check goes here and set boolVar goes here
});

但是,因为value不是jQuery对象,而是Javascript如何检查当前匹配元素的值是空的还是null或未定义并将boolVar设置为true?此外,如果至少有一个.has_paises为空,则无需检查其余部分,只需将boolVar设置为true并继续执行代码,即从forEach周期退出。有帮助吗?建议被接受用于改进我的代码,我想到了它并且我认为并不完美。

3 个答案:

答案 0 :(得分:1)

您可以按文字过滤并检查集合是否具有长度,如果是,则包含没有文本的元素

var boolVar = $("#fabricanteBody").find(".has_pais").filter(function() {
                  return $.trim( $(this).text() ).length > 0;
              }).length > 0;

答案 1 :(得分:0)

var boolVar = !$('#fabricanteBody .has_pais:empty').length;

See documentation.

答案 2 :(得分:0)

这使用.get()让jQuery返回一个真正的数组,并.some()迭代它。当回调返回true时,.some()停止迭代。回调获取DOM元素内容,如果为null,未定义或为空字符串,则返回true。

var boolVar = $("#fabricanteBody .has_pais").get().some(function(el) {
    var content = el.innerHTML; return !content && content !== 0;
});

Array.prototype.some reference