2012-12-31 26 views
0

在下面的代码中,我使用jquery更新数据模式值。该值来自服务器。使用live时无法获得属性新值()

所以,现在,如果它是'阻止',当我点击它时,如果服务器一切顺利,它将是'解锁'。

它更新为'解锁'。我可以在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; 
    }); 
+0

你为什么使用.attr()?使用.data()通过。 – kennypu

+0

哇!我不相信。这工作! – Norman

+0

我会发布它作为答案然后;) – kennypu

回答

0

在这条线:

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

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

+0

非常感谢。 – Norman