我在這個網站搜索了很多,並且有很多很好的答案,這是我第一次需要提問,因爲我找不到答案。存儲和調用[jquery]選擇器
我的腳本被注入用戶加載的頁面,所以這些頁面可能是完全任意的結構。頁面上總是會有一些特殊的文本,我希望下次訪問該頁面時能夠自動檢索這些文本(這是一個實時值,所以我很喜歡這個值)。
頁面非常隨意,我能做到的唯一方法是讓用戶雙擊該值以「訓練」腳本並檢測事件和被雙擊的元素。這工作正常,我可以檢索我想要的值,我有一個元素的jQuery對象。
我無法弄清楚如何存儲該元素(或者更確切地說是它的選擇器),這樣我可以在下次訪問該頁面時檢索數據,而無需雙擊它。
這裏是一個jsFiddle http://jsfiddle.net/troywray/YvSH9/如果你雙擊紅色文本,我想要的文本很容易檢索。但是我可以存儲什麼以便能夠在稍後再現選擇器?
$('body').bind("dblclick", function(event){
var dblClickElement = $(event.target);
var specialText = dblClickElement.html();
alert("I picked up: " + specialText);
console.log(dblClickElement);
console.log("selector result:", $(dblClickElement).selector); // empty string
});
控制檯說,dblClickElement是一個對象[span.abcde]但它在螢火一個可點擊的對象。我想要的是字符串'span.abcde',所以我可以使用它來選擇未來。似乎並沒有jquery對象的屬性等於span.abcde
我以爲我在這裏發現了一些相關的東西:Get the current jQuery selector string?但它在這裏不起作用(證明是在小提琴中,我得到了爲什麼)。
我真的不想要解析內部/外部html建立選擇器字符串的建議 - 如果我必須這樣做,那麼毫無疑問,我可以弄清楚。
另外,我知道在很多情況下,選擇器可能不會給我一個唯一的元素,但我可以處理它。
問題是 - 單個節點可能有許多選擇器。如果不遍歷DOM樹並構建您喜歡的選擇器,則無法將節點轉換爲選擇器。 – Dogbert
你可以用DOM遍歷來手動構建選擇器,還是你想避免* all *遍歷/ HTML操作? –
@Dogbert - 謝謝 - 好點。我想我正在考慮在jsFiddle中,*我*沒有告訴jQuery使用span.abcde,但是某些事情已經決定這是選擇器 - 而tag.class在這種情況下是一個很好的選擇器。我不應該說我必須有span.abcde。我只需要一個將返回一個或多個元素的選擇器,包括我真正想要的元素(我假設我可以獲取一個元素數組並確定哪個索引是我想要的元素,例如$('span')[4] –