jQuery: обращение к родительскому элементу динамически добавляемого элемента и манипулирование им - PullRequest
0 голосов
/ 02 февраля 2012

Я загружаю 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 голосов
/ 02 февраля 2012

Проблема в том, что вы используете $(this).after(). Это значит, что ваша кнопка находится после блока, который вы хотите скрыть, а не внутри него. То, что вы действительно хотите, это $(this).append().

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

0 голосов
/ 02 февраля 2012

Я не знаю, как выглядит разметка, но вы можете попробовать

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