0

値が変更されているときにhtml要素を更新するにはどうすればよいですか。私はこのタグを持っていると仮定します:

<div id="response" style="display:none;"><div>

そして私はこのスクリプトを持っています:

<script type="text/javascript">
    $('#delete_link').click(function(e) {
        e.preventDefault();
        $('#result').html('').load('{% url messages_delete message.id %})
        alert($('#result').html());
        $('#'+$('#result').html()+'_list').trigger('click');
    });
</script>

ユーザーがdelete_linkをクリックすると、サーバーは応答divに値を送信するため、以前は空だった応答divに値が設定され、その値を使用して、どのタブをトリガーするかを判断します。alertを使用すると、このタグの値が変更されたことを理解し、トリガーが機能します。しかし、警告がなければ、値が変更されたことを理解しておらず、トリガーが機能しないようです。値が変更されたことをプログラムに通知する方法はありますか?アラートは使いたくない。よろしくお願いします

4

2 に答える 2

1

.Load()は非同期であるため、ロードコールバック関数でコンテンツhtmlを設定する必要があります。

 $('#delete_link').click(function(e) {
        e.preventDefault();
        $('#result').html('').load('{% url messages_delete message.id %}',function(){
           $('#'+$('#result').html()+'_list').trigger('click');
        });
    });
于 2012-11-14T09:56:56.833 に答える
1

AJAXは非同期であり、リクエストの完了後に実行されるロードコールバック関数を使用できます。

$('#delete_link').click(function(e) {
    e.preventDefault();
    $('#result').load('url', function(){
       $('#'+ $(this).html() +'_list').click()
    })
});

新しいマークアップを追加する前にロードすると、要素の現在のマークアップが削除されるため、使用html('')は冗長であることに注意してください。

于 2012-11-14T09:57:45.120 に答える