使用live()时无法获取属性的新值

时间:2012-12-31 07:03:41

标签: jquery

在下面的代码中,我使用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;
    });

1 个答案:

答案 0 :(得分:0)

在这一行:

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

你正在使用.attr()。你应该在整个过程中使用.data()。