jQuery选择器-家长问题

jQuery选择器-家长问题,jquery,ruby-on-rails,jquery-selectors,Jquery,Ruby On Rails,Jquery Selectors,我有一个emote选择器,当用户单击日记中的条目时,它会打开。我的工作方式是,emote选择器面板隐藏在页面顶部。当用户单击与条目相关联的“emote控件”时,我使用JavaScript从页面顶部抓取emote选择器面板的HTML,并将其插入条目旁边 使用Firebug,以下是页面中成品的外观(来自element inspect的片段)。我正在尝试获取类“emote control container”的ID,该类包含条目ID: <td> <div id="146700

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

使用Firebug,以下是页面中成品的外观(来自element inspect的片段)。我正在尝试获取类“emote control container”的ID,该类包含条目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>
我在遍历DOM以从.emote控件容器获取元素ID时遇到问题

我什么都试过了,但我希望它能起作用,但它不能:

  jQuery('li').live('click', function(e) { 
    e.preventDefault;
    var entryId = jQuery(this.id).parent(".emote-control-container").attr("id");
    alert(entryId);
  });
我做错了什么。?我无法将.emote控件容器的ID作为目标。

您希望在此处显示,如下所示:

jQuery('li').live('click', function(e) { 
  e.preventDefault;
  var entryId = jQuery(this).closest(".emote-control-container").attr("id");
  alert(entryId);
});
如果调用与选择器匹配,则只会得到立即的父级,直到找到它时才会继续进行调用(这有点违反直觉)。会一直爬升直到与选择器匹配,这正是您所追求的。

您想要在这里,如下所示:

jQuery('li').live('click', function(e) { 
  e.preventDefault;
  var entryId = jQuery(this).closest(".emote-control-container").attr("id");
  alert(entryId);
});

如果调用与选择器匹配,则只会得到立即的父级,直到找到它时才会继续进行调用(这有点违反直觉)。直到与选择器匹配为止,这就是您所追求的。

太棒了,尼克,谢谢!这就像一种魅力,我以前在无数次实验中都试过,但显然没有成功。太棒了,尼克,谢谢!这就像一种魅力,我以前在无数次实验中都试过,但显然没有成功。这太完美了。