我有一个表情选择器,当用户点击日记中的条目时会打开它。我的工作方式是表情选择器面板隐藏在页面顶部。当用户点击与条目相关联的“表情控件”时,我使用JavaScript从页面顶部抓取表情选择器面板的HTML并将其插入条目旁边。
使用Firebug,这是成品在页面中的样子(来自元素检查的片段)。我正在尝试获取包含条目ID的类'emote-control-container'的ID:
<td>
<div id="1467002" class="emote-select emote-default"> </div>
<div class="emote-control-container" id="emote-controls-1467002">
<div id="emote-control-selector">
<div id="emote-control-selector-body">
<ul>
<li id="emote-1"><img src="/images/default_emote.gif?1276134900" class="emote-image" alt="Default_emote"></li>
<li id="emote-2"><img src="/images/default_emote.gif?1276134900" class="emote-image" alt="Default_emote"></li>
<li id="emote-3"><img src="/images/default_emote.gif?1276134900" class="emote-image" alt="Default_emote"></li>
<li id="emote-4"><img src="/images/default_emote.gif?1276134900" class="emote-image" alt="Default_emote"></li>
</ul>
</div>
<div id="emote-control-selector-footer">
</div>
</div>
</div>
</td>
当用户通过点击它从选择器面板中选择表情时,我需要条目ID和表情ID来通过AJAX发布帖子。
我可以通过此方式获得表情符号,我用它来提示所选的表情ID:
jQuery('li').live('click', function(e) {
e.preventDefault;
var emoteId = this.id;
alert(emoteId);
});
我无法遍历DOM以从'.emote-control-container获取元素ID。
我已经尝试了所有的东西,但是我希望这可以工作,但事实并非如此:
jQuery('li').live('click', function(e) {
e.preventDefault;
var entryId = jQuery(this.id).parent(".emote-control-container").attr("id");
alert(entryId);
});
我做错了什么。我无法定位.emote-control-container的ID。
答案 0 :(得分:1)
你想要.closest()
,就像这样:
jQuery('li').live('click', function(e) {
e.preventDefault;
var entryId = jQuery(this).closest(".emote-control-container").attr("id");
alert(entryId);
});
.parent(selector)
来电只会获得立即父,如果它与选择器匹配,它会一直找到它(这是一个有点反直觉)。 .closest(selector)
会爬升,直到它与选择器匹配,这就是你所追求的。