2009-10-12 114 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

相關問題