2012-02-02 7 views
0

ドキュメントにXMLを読み込んでDIVボタンを追加しています。ボタンをクリックすることで、ボタンだけでなくその親要素も​​に移動することはできません。参照とフェードアウトが機能している間は、親要素へのアクセスに失敗します。 (私のコードの最後の行を見てください)。jQuery:動的に追加された要素の親要素を参照して操作する

$(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!! 
} 

UPDATE:

XML/HTMLは次のようになります。

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

私は全体part_gpを非表示にする。..

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

はどちらか動作しませんでした..

答えて

0

問題は、あなたが$(this).after()を使用していることである試すことができます。それはあなたがブロックしたいと思うブロックの後ろにあなたのボタンを置いています。あなたが本当に欲しいのは$(this).append()です。

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

0

私は知らないマークアップwのように見えますが、あなたは

$(this).parents("div.someClassForIdentification").fadeOut(); 
関連する問題