1

您好,我有一些看起来像这样的 HTML,

<div id="music_interests">
    <ul class="interests">
        <li >
        <div class="interest inline">
        <img src=""/>
        <div class="interest_popup">
            1 users have this interest.
        <a href="http://localhost/love/index.php/my_profile/remove_interest/34" class="button red upper rounded_5 small remove">Remove interest</a>                                     </div>
            </div>
        </li>
    </ul>

当用户单击删除按钮时,我需要选择父 div(在本例中为 music_interests)。我该怎么做呢?

我尝试过以下操作,

$(this).parent().parent().parent().parent()但有更优雅的方式吗?

更复杂的是,我实际上不会在应用程序中没有父母 ID,因为删除按钮出现在页面上的 4 或 5 个不同区域。

4

3 回答 3

5

你应该使用closest()

$(this).closest('div#music_interests');
//find the nearest div with id "music_interests"
//if i omitted the id, it retrieves the div with class "interest_popup"

或者parents()

$(this).parents('div:eq(1)');
//get ALL the ancestor divs (until it reaches root tag)
//since music_interests is just 2 levels up, use :eq(1)
于 2012-04-21T09:30:04.840 回答
0

如果您要删除的 DIV 的 ID 是静态的,您应该只使用 ID 选择器(而不是像$("div#music_interests")之类的东西),因为 ID 选择器直接映射到 DOM 函数document.getElementsById这非常快:

$("#music_interests").remove();

如果 ID 不是静态的,您可以像这样获得 UL:

$(function(){ //execute when page has been loaded
    $(".remove").click(function(){ //attach click handler
        var removeDiv = $(this).closest("ul").parent().remove(); //get next UL -> DIV is its parent
        return false; //stop further processing of "click" event
    });       
});
于 2012-04-21T09:40:42.150 回答
0

如果删除按钮始终存在于 ul 标记中(在所有 4 或 5 个不同区域中),那么您可以使用以下代码。

$(this).closest("ul").parent()

在这种情况下,您甚至不需要为 DIV 标签提供 id

于 2012-04-21T10:09:39.970 回答