我正在创建一个小动态工具提示功能。
基本上如果我有这样的链接:
<a href="#" data="xyz">?</a>
使用qTip,我尝试在mysql中查找工具提示表,并根据数据属性中的数据检索提示。
所以:
$('a[data]').qtip({
content: {
url: '/tooltip.php',
data: { tipKey: $(this).attr('data') },
method: 'post'
}
});
问题是,它不起作用。 $(this).attr('data')似乎没有拉出属性中的值。
如果我手动更改功能,看起来如下所示它没有问题。
$('a[data]').qtip({
content: {
url: '/tooltip.php',
data: { tipKey: 'xyz' },
method: 'post'
}
});
当我尝试从数据属性中提取数据时,我错过了什么?我应该这样做:
$('a[data]').qtip({
content: {
url: '/tooltip.php',
data: { tipKey: ''+$(this).attr('data')+'' },
method: 'post'
}
});
因为这不会产生价值!
答案 0 :(得分:4)
您的代码不起作用,因为this
关键字表示正在执行的函数的上下文,并且您在对象文字中使用它。
例如,如果您在$(document).ready
事件中执行代码段,则this
关键字将代表文档元素。
您可以{/ 3}}选择器并单独初始化每个元素工具提示:
$('a[data]').each(function () {
var $link = $(this);
$link.qtip({
content: {
url: '/tooltip.php',
data: { tipKey: $link.attr('data') },
method: 'post'
}
});
});
另请注意,data
属性不标准,您的网页不会通过iterate。
答案 1 :(得分:1)
此示例适用于我:
<html>
<head>
<title>Text</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
alert($("a[data]").text());
});
</script>
</head>
<body>
<a href="#" data="123">abc</a>
</body>
</html>
答案 2 :(得分:1)
您应该尝试访问数据的第0个元素。像这样:
data: { tipKey: $("a[data]")[0].data},
编辑:哦,好吧,我知道,这应该可以作为替代方案。