我经常使用这样的代码:
$(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");
,但它无效。
答案 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()
可以返回多个元素。