2009-10-12 109 views
1

我正在创建一个小动态工具提示功能。为什么我的jquery选择器不能在这里工作?

基本上,如果我有一个链接,像这样:

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

}); 

因为这也不产生价值!

回答

4

您的代码不工作,因为this关键字表示正在执行的功能的情况下,你使用一个对象常量内。

例如,如果您在$(document).ready事件中执行代码段,this关键字将表示文档元素。

你可以iterate在你的选择并初始化每个单独的元素提示:

​​

还要注意的是data属性不是标准,你的页面将无法通过W3C Validator

+0

感谢堆CMS ...我已经从'数据'转移到'标题',你的解决方案工作。 – willdanceforfun 2009-10-12 04:12:18

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

那么他正在寻找获取属性,而不是链接的文本正确吗? – AlbertoPL 2009-10-12 03:59:59

+0

正确阿尔贝托......的属性未东西其间的 willdanceforfun 2009-10-12 04:04:50

1

你应该尝试访问数据的第0个元素。像这样:

data: { tipKey: $("a[data]")[0].data}, 

编辑:哦好吧,我明白了,这应该工作,然后作为替代。

+0

嗯...我希望这会工作,但事实并非如此:| – willdanceforfun 2009-10-12 04:06:48

相关问题