javascript $(this).data()不起作用

问题描述:

我写了一些使用ajax向数据库发送值的代码。但是,我的警报框显示值为undefined。我不明白我的问题是什么。

<script> 
    $(document).ready(function(){ 
     $(document).on('click', '#publish', function(){ 

      var status = $(this).data('data-pid'); 
      alert(status); 
      $.ajax 
      ({ 
       url: 'update_about_status.php', 
       data: {"statusValue": status}, 
       type: 'post', 
       success: function(result) 
       { 
        $('.modal-box').text(result).fadeIn(700, function() 
        { 
         setTimeout(function() 
         { 
          $('.modal-box').fadeOut(); 
         }, 2000); 
        }); 
       } 
      }); 
     }); 
    });   

</script> 
print'<button type="button" id="publish" class="btn btn-info" data-pid="'.$cd[$i][3].'">Make Publish</button>'; 

当您使用data() API,没有必要有data-前缀读取data-*属性值 - 见data-html5

var status = $(this).data('pid'); 

如果您正在使用.attr(),那么你需要使用完整的属性名称,如

var status = $(this).attr('data-pid'); 
+0

我已经做了修正,以VAR状态= $(本)。数据( 'PID');但是显示undefined – shanto

+0

@shanto:那么你有一个不同的问题,在你发布的代码中看不到。 –

+0

@shanto请参阅http://jsfiddle.net/arunpjohny/Hw9Hf/1/ - 也分享生成的html,并尝试在小提琴中重新创建问题 –

您不必提供data-在参数data()函数中,但你必须给予piddata-用于标识数据属性。

Live Demo

var status = $(this).data('pid'); 

与数据 - *嵌入自定义不可见的数据属性

自定义数据属性是没有命名空间,其名称与字符串 启动属性“数据 - “,连字符后至少有一个字符,是XML兼容的,不包含大写ASCII字母reference

+0

我已经对var status = $(this).data(' PID');但是显示undefined – shanto

+0

它为我工作,在这里检查它,http://jsfiddle.net/S7Rpr/1/ – Adil

可以尝试更改为:

var status = $(this).data('pid');