0

私が読んだものはすべて、.live()、. on()、. bind()、. delegate()などを使用して追加されるイベントハンドラーにつながります。

私は以前に正しく出くわさないかもしれない質問をしたので、私はそれを削除し、私が信じる残りを行うことができるはるかに単純なものを再質問することに投票しました。

AJAXなどを介して動的にロードされるクラスを含む、事前定義されたクラスを使用してHTML要素のinnerhtmlをクリアする方法はありますか?

したがって、ajax呼び出しが発生するたびに

<div class="triggerElement">something here...</div>

またはページ上の同様のもの、私はそれを空にする必要があります。私はそれを正しく説明したと思います。そうでない場合はお知らせください。

編集

多くの混乱のようです。.empty&それのような他のものは動作しません。あなたが電話する場合

$(".omButton").empty();

インデックスから、他のモジュールが後で同じクラスのAJAXを介して何かをロードしますが、それは空になりません。最初にページに要素がある場合は、それを呼び出します。はい、機能します。

.emptyと.htmlを試しましたが、AJAXでロードされたコンテンツではどちらも機能しないため、.liveまたは.delegateに沿って、事後にロードされたすべてのコンテンツで機能するものが必要です。

これを他に説明する方法がわからない。とてもシンプルだと思いました。ごめん!

編集2..。

インデックスに空の関数が含まれています

$(function(){
    $('.omButton').empty();
    $ajax... to load "loadedContent"
});

<div class="omButton"></div>
<div id="loadedContent"></div>

ajaxは戻ります

json_encode(array('test' => '<div class="omButton">Button Text</div>'));

これで、インデックスのHTMLは次のようになります。

<div id="loadedContent"><div class="omButton">Button Text</div></div>

ただし、ページが読み込まれたときに内部divがなかったため、.emptyは影響しません。ページの読み込みに、発生(静的または動的)を「監視」して空にすることができるものが必要です。

うまくいけば、それは役に立ちますか?

4

3 に答える 3

5

$ .ajaxComplete()を使用してみてください-これは、すべてのajaxリクエストが完了した後にトリガーされるためです

$('body').ajaxComplete(function() {
  $('.triggerElement').empty();
});
于 2012-11-12T16:40:49.850 に答える
1

これを試して。。空

$.ajax({
    ...
    complete: function(){
        $(elementSelectorForWhatYouWantEmptied).empty();
    }
})

または、読み込まれる要素がDOMに動的に配置される場合は、を使用できます.live()

$(elementThatIsInDOM).on(event, elementSelectorThatIsDynamicallyAdded, function(){
    $(elementSelectorForWhatYouWantEmptied).empty();
})
于 2012-11-12T16:33:00.063 に答える
0

ajaxを使用してコンテンツを読み込んでいて、そのコンテンツがコンテンツのタグでいっぱいになっている場合

<div class="triggerElement">something here...</div>

そしてempty、それがロードされた後にその要素を実行したい場合は、データがロードされたときに実行されるコールバック内でそれを行う必要があります。

$.ajax(
    ....
    success: function(data){
      $(".omButton").empty();
    });
于 2012-11-12T16:43:59.747 に答える