如何使用jQuery选择没有tr标签的div,其中包含特定的id

时间:2012-01-13 15:20:33

标签: jquery-selectors

以下是一些示例代码,用于解释我尝试做的事情:

<div id="list_subpanel_contacts">
    <table>
        <tbody>
            <tr></tr>
            <tr class="oddListRowS1"></tr>
        </tbody>
    </table>
</div>
<div id="list_subpanel_accounts_usi_orders">
    <table>
        <tbody>
            <tr></tr>
        </tbody>
    </table>
</div>
<div id="list_subpanel_orders">
    <table>
        <tbody>
            <tr></tr>
            <tr class="oddListRowS1"></tr>
            <tr class="evenListRowS1"></tr>
        </tbody>
    </table>
</div>

我需要找到任何ID为

&#34; list_subpanel _&#34;,不会有任何<tr &GT;具有&#34; oddListRowS1&#34;的类的标签或&#34; evenListRowS1&#34;。

然后我需要在div的id中获得第二个下划线之后的任何内容并将其传递给函数。

所以,在代码示例中,jQuery只会找到第二个div并传递&#34; accounts_usi_orders&#34;这个功能。

这远远超出了我目前的jQuery选择知识,所以我很感激任何帮助,伙计们。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以filter()使用find()

var divs = $("div[id^=list_subpanel_]").filter(function() {
    return !$(this).find("tr.oddListRowS1, tr.evenListRowS1").length;
});

要提取id片段,您可以使用substr()

divs.each(function() {
    yourFunction(this.id.substr(14));
});

答案 1 :(得分:0)

var elements = new Array();

var i = 0;

    $("div[id^='list_subpanel_']").each(function(){
        if($(this).find('tr.oddListRowS1,tr.evenListRowS1').attr("class") == undefined){
           elements[i] = $(this);
           i++;
        }
    });

    for(i = 0; i < elements.length; i++){
        $(elements[i]).attr("id","whatever");  //And then do what you want to do with it
    }