【问题标题】:Check if value of the current matched element is empty or null or undefined and set boolVar to true检查当前匹配元素的值是否为空或 null 或未定义并将 boolVar 设置为 true
【发布时间】:2015-01-25 02:55:30
【问题描述】:

我有这个 HTML 表格,我需要查找 .has_paises 是否有文本。例如,在下面的代码中,第一个 tr 条件为真,因为 $(".has_paises").text() 应该返回 Some text 但第二个 tr 条件为假,因为相同的代码将返回空或 null 或 undefined 或任何.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>

我需要在#fabricanteBody 中遍历tr 并查找是否至少有一个匹配的元素是emptynullundefined 如果这是真的,那么将 boolVar 设置为真,这样我稍后会检查我的代码是真还是假,所以我想这样做:

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 循环。有什么帮助吗?改进我的代码的建议被接受,我是在脑海中提出的,我认为它并不完美。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      var boolVar = !$('#fabricanteBody .has_pais:empty').length;
      

      See documentation.

      【讨论】:

        【解决方案3】:

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

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

        Array.prototype.some reference.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多