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');
答
您不必提供data-
在参数data()
函数中,但你必须给予pid
,data-
用于标识数据属性。
var status = $(this).data('pid');
与数据 - *嵌入自定义不可见的数据属性
自定义数据属性是没有命名空间,其名称与字符串 启动属性“数据 - “,连字符后至少有一个字符,是XML兼容的,不包含大写ASCII字母reference。
答
可以尝试更改为:
var status = $(this).data('pid');
我已经做了修正,以VAR状态= $(本)。数据( 'PID');但是显示undefined – shanto
@shanto:那么你有一个不同的问题,在你发布的代码中看不到。 –
@shanto请参阅http://jsfiddle.net/arunpjohny/Hw9Hf/1/ - 也分享生成的html,并尝试在小提琴中重新创建问题 –