代码之家  ›  专栏  ›  技术社区  ›  Cesar

jQuery选择器帮助

  •  4
  • Cesar  · 技术社区  · 14 年前
    ...
    <tr>
        <td>222</td>
    </tr>
    <tr>
        <td>333 222</td>
    </tr>
    ...
    

    我有一个选择器代码:

    $("#TableName tr td:contains('222')");
    


    我试着用 $("#TableName td tr[html=222]")

    2 回复  |  直到 14 年前
        1
  •  5
  •   user113716    14 年前

    你可以 use .filter() instead

    var result = $("#TableName tr td").filter(function() {
        return $.text([this]) === "222";
    });
    

    它使用 $.text() 比较 <td> "222" . 这只是一个更快的方法 $(this).text() . 给你同样的结果。 (请注意,您需要通过 this [this] .)

    当存在匹配项时,元素将返回到结果jQuery对象中。

    如果在 <td> with $.trim() .

    return $.trim( $.text([this]) ) === "222";
    

    编辑:

    $.extend($.expr[':'], {
        textIs: function(elem, i, attr) {
            return ($.trim( $.text([elem]) ) === attr[3]);
        }
    });
    var result = $("#TableName tr td:textIs(222)")
    
        2
  •  0
  •   jcubic    14 年前

    我发现这种选择器的实现(在 http://api.jquery.com/contains-selector/ )

    $.expr[":"].econtains = function(obj, index, meta, stack){
    return (obj.textContent || obj.innerText || $(obj).text() || "").toLowerCase() == meta[3].toLowerCase();
    }
    

    例子:

    $("div:econtains('john')").css({ color: "#F00" });