查找与两个选择器匹配的元素

时间:2014-01-13 10:11:37

标签: jquery jquery-selectors

我在网上搜索了很多,没有答案。

我想选择一个没有孩子的TD elemet和text =“abc”。我可以同时做其中一个,但不能两个。

我尝试过这样的事情:

$('#MSOPageViewerWebPart_WebPartWPQ1').contents().find('td:not(:has(*)),td:contains("abc")')

提前致谢!

修改 选择是在IFrame中 - 也许这就是问题?

5 个答案:

答案 0 :(得分:2)

$('#MSOPageViewerWebPart_WebPartWPQ1 td').filter(function(){
    return $(this).children().length === 0 && $(this).text() === 'abc';
});

答案 1 :(得分:1)

试试这个:

$("td(:has(*))").filter(function() {
return $(this).text().indexOf('abc') === 0;
})

答案 2 :(得分:0)

试试这个:

$('#MSOPageViewerWebPart_WebPartWPQ1').find('td:not(:has(*)),td:contains("abc")');

答案 3 :(得分:0)

尝试

$('#MSOPageViewerWebPart_WebPartWPQ1 td:not(:has(*)), #MSOPageViewerWebPart_WebPartWPQ1 td:contains("abc")')

答案 4 :(得分:0)

自定义选择器也可以使用

    $.expr[':'].mySelector = function(elem, index, data){

        var c = elem.childNodes,len=c.length;

        //1- checks that childnodes are NOT element nodes you could opt for (2)
        while(len--){

            if(c[len].nodeType==1)return false;

        }

        /*2- checks that childnodes are ONLY text nodes you could opt for (1)
        while(len--){

            if(c[len].nodeType!=3)return false;

        }
        */

        return (elem.innerText || elem.textContent).replace(/^\s+|\s+$/,'') == data[3];


    };

    $(function(){


        console.log($('td:mySelector(abc)'));

    });