如何在jQuery中定位父级的第三个子级别?

时间:2015-06-02 02:08:03

标签: jquery

JSFiddle:http://jsfiddle.net/grbw4tcg/1/

我有一个页面可能有多个带有类的分组输入块,比如说“error_bx”。我想要定位具有此类的第一个元素,并且在其中,我想检查并查看它的第三级子类是否有一个名为“uniform-select”的类,如果它有,那么将类“focus”添加到它。

到目前为止,我到了这里,但我不确定如何将变量'firstError'与遍历子元素结合使用。另外,有更有效的方法吗?

var firstError = $('.error_bx').first();

if($(firstError).children().eq(0).hasClass("uniform-select")){
        $($(firstError).children().eq(0)).addClass("focus");//
    }
    else if($(firstError +' > div.row > div > div').hasClass("uniform-select")){

        $('div.error_bx > div.row > div > div').addClass("focus");
    }
    else{
        $($(firstError).children().eq(0)).focus();
    }

HTML:

<div class="formgrp error_bx">
    <div>
        <div>
            <div class="selector uniform-select">
                <select>
                    <option>Month</option>
                    <option>January</option>
                    <option>February</option>
                    <option>March</option>
                    <option>April</option>
                </select>
            </div>
        </div>
        <div>
            <input type="text"/>
        </div>
        <div>
            <input type="text"/>
        </div>
    </div>
</div>

<div class="formgrp">
    <div>
        <div>
            <div class="selector uniform-select fixedWidth">
                <select>
                    <option>Month</option>
                    <option>January</option>
                    <option>February</option>
                    <option>March</option>
                    <option>April</option>
                </select>
            </div>
        </div>
        <div>
            <input type="text"/>
        </div>
        <div>
            <input type="text"/>
        </div>
    </div>
</div>

<div class="formgrp error_bx">
    <div>
        <div>
            <div class="selector uniform-select">
                <select>
                    <option>Month</option>
                    <option>January</option>
                    <option>February</option>
                    <option>March</option>
                    <option>April</option>
                </select>
            </div>
        </div>
    </div>
</div>

<div class="formgrp error_bx">
    <div>
        <input type="text"/>
    </div>
</div>

1 个答案:

答案 0 :(得分:1)

使用此处列出的JQuery dom遍历方法: https://api.jquery.com/category/traversing/

在你的小提琴上,我用它来瞄准你讨厌的div:

var firstError = $('.error_bx').first();
f = firstError.children().children().children().eq(0);