jQuery选择器 - 父母问题

时间:2010-06-17 00:26:27

标签: jquery ruby-on-rails jquery-selectors

我有一个表情选择器,当用户点击日记中的条目时会打开它。我的工作方式是表情选择器面板隐藏在页面顶部。当用户点击与条目相关联的“表情控件”时,我使用JavaScript从页面顶部抓取表情选择器面板的HTML并将其插入条目旁边。

使用Firebug,这是成品在页面中的样子(来自元素检查的片段)。我正在尝试获取包含条目ID的类'emote-control-container'的ID:

<td>
    <div id="1467002" class="emote-select emote-default">&nbsp;</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">
            &nbsp;
        </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。

1 个答案:

答案 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) 爬升,直到它与选择器匹配,这就是你所追求的。