jQuery:引用和操作动态添加元素的父元素

时间:2012-02-02 10:42:51

标签: jquery dom fadeout

我正在我的文档中加载一些XML并为其添加一个DIV按钮。通过单击按钮,我不仅要fadeOut()按钮,还要它的父元素。虽然引用和淡出按钮本身正在工作,但我无法访问其父元素。 (请参阅我的代码中的最后几行)。

$(document).ready(function(){

    var searchstring = decodeURIComponent(getUrlVars()["search"]);

    $.ajax({
        url: 'data.xml',
        type: 'GET',
        dataType: 'xml',
        timeout: 10000,
        error: function(){
            alert('Error loading XML document');
        },
        success: function(xml){
            $(xml).find('entry').filter(function(index) { return $('lemma', this).text() == searchstring; } ).each(function() { 
                $(this).find('part_gp > part').each(function(){
                    var more = $('<div class="more">+</div>');
                    $(this).after(more);
                    more.click(fader);
                });

            $( "#result" ).append( $(this) );

            });
            }
    });
});

function fader() {
    $(this).fadeOut();   // this works!!
    $(this).parent().fadeOut(); // this doesn't work!!
}

更新:

XML / HTML将如下所示:

<part_gp>
  <part>Grafschaft</part>
  <div class="more">+</div>
  <pos> feminin / weiblich</pos>
</part_gp>

我想要隐藏整个part_gp ..

$(this).parents("part_gp").fadeOut();

也不起作用..

2 个答案:

答案 0 :(得分:0)

我不知道标记的样子,但你可以尝试

$(this).parents("div.someClassForIdentification").fadeOut();

答案 1 :(得分:0)

问题是你正在使用$(this).after()。那就是把你的按钮放在你要隐藏的块之后,而不是它里面。你真正想要的是$(this).append()

http://api.jquery.com/after/
http://api.jquery.com/append/