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 现在有了一个值,我将使用它的值来知道我应该触发哪个选项卡。当我使用警报时,它知道此标签的值已更改,并且触发器起作用。但是没有警报,它似乎不了解值已更改并且触发器不起作用。有没有办法告诉程序该值已更改?我不想使用警报。非常感谢您的帮助

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 回答