2012-06-25 38 views
3

如在each()循環下文中,筆者已經指定自定義數據屬性添加到拉斐爾畫布某些圈子:jQuery的 - 拉斐爾 - SVG - 基於定製數據選擇

marker.data('transaction', transaction); 

如何找到的元素具有相同交易數據值的畫布?

目前我的代碼:

var found = document.querySelectorAll("[transaction='" + current_transaction +"']"); 

哪個應該返回與元素的節點列表,但它不工作。要將數據檢索到變量中,它就像var foo = marker.data('transaction')一樣簡單,但顯然,如果我想要檢索元素的NodeList,這不起作用。

所以,我想我的選擇應如下所示,但我不能制定出正確的語法:

var found = document.querySelectorAll("data('transaction' = 1)"); 

任何幫助,將不勝感激

回答

5

在於拉斐爾必須支持VML,它不保留數據的DOM正如html5應用程序一樣。如果您想將數據存儲在DOM必須訪問HTML節點並設置該屬性有...

marker.node.setAttribute('data-transaction', transaction); 

然後你可以再與querySelectorAll查詢元素。請記住,這將在IE8的<上失敗。

如果你想保留舊的IE支持,我建議你寫一個函數,遍歷您的標記,並返回拉斐爾對象時mark.data("transaction") == transaction

2

我認爲這個問題是jQuery有無法訪問SVG節點。你必須嘗試正常的Javascript。如果您使用querySelectorAll,則問題可能是與舊版瀏覽器的兼容性。

看看這裏:http://dean.edwards.name/jsb/behavior/querySelectorAll.html 這裏:http://www.w3.org/TR/selectors-api/#queryselectorall

可能的解決辦法: 有在拉斐爾督一看:http://raphaeljs.com/reference.html#Element.data

+0

哦,謝謝。那麼我的選擇器將如何基於.data函數來查看? – jacktheripper

+0

在過去的兩週裏,我正在與raphaeljs一起作爲高分辨率顯示器的圖像替換測試。所以我沒有動態編碼的經驗。抱歉。 – liquid