parent()。parent()。parent() - 更好的方法?

时间:2014-01-21 18:50:29

标签: jquery

我经常使用这样的代码:

$(document).on("click", ".cChatSmileyWindow", $.proxy(function(e) {
    var windowID = $(e.currentTarget).parent().parent().parent().data("windowid");
}, this));

有没有更好的方法来做到这一点? HTML看起来像这样:

<span class="dropdownMenu dropdownArrowRight dropdownArrowBottom dropdownOpen" id="cChatSmileyBox1" data-windowid="1">
    <ul class="cChatSmileyList">
        <li>
            <span class="cChatSmileyListSmiley cChatSmileyWindow">
                <!-- ... -->
            </span>
        </li>
    </ul>
</span>

我尝试了$(e.currentTarget).parent('dropdownMenu').data("windowid");,但它无效。

3 个答案:

答案 0 :(得分:8)

尝试最近():

var windowID = $(e.currentTarget).closest(".dropdownMenu").data("windowid");

答案 1 :(得分:1)

根据jQuery docs,您必须使用parents()

$(e.currentTarget).parents('dropdownMenu').first().data("windowid");

答案 2 :(得分:1)

$(e.currentTarget).parent('dropdownMenu').data("windowid");不起作用的原因是dropdownMenu不是父级。此外,你错过了dropdownMenu前面的时期,但无论如何它都无法正常工作。

怎么样:

$(e.currentTarget).closest('.dropdownMenu').data("windowid")

我相信closest()将返回单个元素,而parents()可以返回多个元素。

相关问题