2011-07-28 3 views
0

どのように動的にロードされたコンテンツをjQueryでターゲットできますか? .live()関数はロードされたコンテンツにイベントを追加する簡単な方法ですが、読み込まれたコンテンツ内のオブジェクトをどのようにターゲットするかはわかりません。私は、メインページ上のコンテナを持っている:jQuery AJAX - ターゲットに読み込まれたコンテンツ

<div id="container">place to load content</div> 

とロードされたページ上のコンテナ:

<div id="ajax-container"> 
    <div id="stuff"> 
     <div class="random-class">stuff to be loaded</div> 
     <div class="random-links"><a href="#" class="delete">delete me</a></div> 
    </div> 
</div> 

私は削除するために使用していた「削除」クラスとのリンクを持っています#stuff。私は、jQueryが新しいコンテンツを無視することを知り、そのアンカーにイベントを添付できませんでした。私は.live()関数を発見し、それは私のクリックの問題を修正しました。

$('.delete').live('click', function() { 
    alert('click event works'); 
    $(this).parent('#stuff').hide(); 
}); 

アラートは発生しますが、div#も同様にターゲットに設定できますか?

+0

なぜ '$( "#ターゲット")で非表示();。私は読むことを学ぶ必要がある' – Rafay

+0

DOH。とにかく、parent()のjquery APIを読み込んだ場合、parent()は祖先の最初の層にしか行きません。 #stuffは2層上にあるので動作しません。あなたが3nigmaがparents()を使って示唆したことをしたくない場合、あるいはより効率的なものがよりうまくいくでしょう – scrappedcola

答えて

2
$('.delete').live('click', function() { 
    alert('click event works'); 
    $(this).closest('div#stuff').hide(); 
}); 

はフィドルhttp://jsfiddle.net/5tCZH/

1

私は分かりませんが、$('#stuff')は、あなたがそれを呼び出す場所に関係なく、そのDivのjQueryオブジェクトを取得します。 (this.parentを失う)

0

コードに基づいて: .parent()を使用すると、DOMツリー内の1つのレベルまでしか移動しません。代わりに、.parents()メソッドを使用して、複数のレベルまで移動してみてください。ここ

関連する問題