jQuery得到元素

时间:2011-01-07 17:45:37

标签: jquery

我需要检索具有特定类的元素,该类位于DOM下面。例如:

<div>
    <a onclick="someMethod(this)">
</div>
<div class="specificClass">
</div>

在someMethod中我有锚,但需要检索第一个元素,其中“specificClass”类放在下面。

更新。未指定<div class="specificClass">的位置。我知道的唯一一件事 - 它位于

之下

4 个答案:

答案 0 :(得分:4)

试试这个:

$('a[onclick]').parent().next('.specificClass')

答案 1 :(得分:4)

DEMO: http://jsfiddle.net/reKwQ/1/

不要使用onclick属性,而是为您的锚定一个类或ID:

<div>
    <a class="someClass">
</div>
<div class="specificClass"></div>

然后使用jQuery将click事件绑定到它并从那里开始:

$('a.someClass').click(function() {
    var $elements = $('a.someClass, .specificClass');

    var foundThis = false,
        $nextSpecificClass = null,
        $this = $(this);

    $elements.each(function() {
        var $element = $(this);
        if (foundThis === false && $element[0] == $this[0]) {
            foundThis = true;
        } else if (foundThis === true && $element.is('.specificClass')) {
            $nextSpecificClass = $element;
            return false;
        }
    });

    // Do something  with $nextSpecificClass here

    return false;
});

这是有效的,因为您有一个包含锚元素和目标元素的匹配元素列表,这些元素将按发现顺序排列。

一旦找到我们点击的内容,我们就可以接受下一个可用的.specificClass元素作为结果。

DEMO: http://jsfiddle.net/reKwQ/1/

答案 2 :(得分:0)

使用next获取下一个兄弟

function someMethod(e)
{
    // if the element is bellow you don't need to specify the selector
    var specificClass = $(e).parent().next(".specificClass");
}

语法:

.next( [selector] )

答案 3 :(得分:0)

这是一种方式。采用半DOM API,半jQuery方法。

function someMethod(el) {
    var result;
    while( (el = el.parentNode) && !(result = $(el).next('.specificClass')).length ) {}
    alert( result.attr('class') );
}

或更多jQuery方式:

function someMethod(el) {
    var result = $(el).parents().next('.specificClass').first();
    alert( result.attr('class') );
}

第一个会更有效率(我确定),但第二个更短,更具表现力。