为什么我的jquery选择器不在这里工作?

时间:2009-10-12 03:52:18

标签: jquery qtip

我正在创建一个小动态工具提示功能。

基本上如果我有这样的链接:

<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'
    }

});

因为这不会产生价值!

3 个答案:

答案 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},

编辑:哦,好吧,我知道,这应该可以作为替代方案。

相关问题