0

在下面的代码中,我使用 jquery 更新数据模式值。该值来自服务器。

所以现在如果它是“阻止”,当我单击它时,如果服务器上一切顺利,它将是“解除阻止”。

它更新为“取消阻止”。我可以在 Mozilla 中使用开发工具看到这一点。但是当我再次单击它时,我仍然得到旧值。不是新的。

我在这里做错了什么,我该如何做对?

<span class="mod-user" data-mode="Block" data-handle="3">Block</span>

我的jQuery:

$('.mod-user').live('click', function() {

    var mode        = $(this).data("mode");
    var userHandle  = $(this).data("handle");
    var handle  = 'mode='+mode+'&handle='+userHandle;

    if(handle){

            // ajax call
            $.ajax({
                type: "GET",
                 url: "/modset/",
                data: handle,
            dataType: "json",
               cache: false,

                beforeSend: function(html) {

                    $('.mod-user[data-handle="'+userHandle+'"]').empty();
                    $('.mod-user[data-handle="'+userHandle+'"]').html('Wait..');

                    },
               success: function(preData){

                    if (preData["success"] == false){

                        delete preData["success"];


                    }else if (preData["success"] == true)
                    {

                        delete preData["success"];

                        $(this).html('');

                        alert(preData['response']);

                        $('.mod-user[data-handle="'+userHandle+'"]').html(preData['response']);
                        $('.mod-user[data-handle="'+userHandle+'"]').attr('data-mode',preData['response']);


                    }else{
                        alert('Error');
                    }



              },
            });
            }
        return false;
    });
4

1 回答 1

0

在这条线上:

$('.mod-user[data-handle="'+userHandle+'"]').attr('data-mode',preData['response']);

您正在使用 .attr()。您应该始终使用 .data() 。

于 2012-12-31T07:10:27.113 回答