我想選擇具有以設置字符串開頭的屬性名稱(鍵)的元素。使用案例:jQuery UI dialog創建按鈕,其唯一的獨特identifers是有順序的值,如jQuery1288273859637="40"
我可以在jQuery中查詢屬性鍵通配符嗎?
我想基於一個事實,即屬性的名是jQuery的*選擇一個僞隨機的自定義屬性(開始與jQuery)
我想選擇具有以設置字符串開頭的屬性名稱(鍵)的元素。使用案例:jQuery UI dialog創建按鈕,其唯一的獨特identifers是有順序的值,如jQuery1288273859637="40"
我可以在jQuery中查詢屬性鍵通配符嗎?
我想基於一個事實,即屬性的名是jQuery的*選擇一個僞隨機的自定義屬性(開始與jQuery)
你正在尋找的屬性是jQuery的的expando ......這將是完全無用的目標這些屬性的數量「jQuery的」基於當前時間和每個頁面重載(ref1 & ref2更改後)。
最好是在您的基本HTML中定位一個類。例如,jQuery UI的對話框應該有這樣的基本HTML(ref):
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable">
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<span id="ui-dialog-title-dialog" class="ui-dialog-title">Dialog title</span>
<a class="ui-dialog-titlebar-close ui-corner-all" href="#"><span class="ui-icon ui-icon-closethick">close</span></a>
</div>
<div style="height: 200px; min-height: 109px; width: auto;" class="ui-dialog-content ui-widget-content" id="dialog">
<p>Dialog content goes here.</p>
</div>
</div>
找到您想要的目標,並用它代替id或class!
如果你需要的目標對話框中的按鈕,然後使用這樣的事情:
$('.ui-dialog .ui-button:contains("Cancel")')
獲取對話框的引用,然後使用css選擇器來查找按鈕。螢火蟲(或谷歌瀏覽器開發者工具)可用於確定要查找的內容。
這是行不通的 - 在OP正在尋找屬性名*開始使用jQuery - 我做同樣的錯誤 – 2010-10-28 14:37:08
你是對的,史蒂夫。 OP意味着/代表什麼? – Jake 2010-10-28 14:41:06
啊對,編輯我的迴應反映了這一點。 – 2010-10-28 14:42:25
只想到我能想到的是測試.filter()
中每個DOM元素的各個鍵。
這是很沒效率,但如果你真的想要它,它可能是這個樣子:
$('body *').filter(function() {
for(var k in this) {
if(this.hasOwnProperty(k) && k.indexOf("jQuery") === 0) {
return true;
}
}
return false;
});
這將遍歷在<body>
所有元素,然後遍歷所有的鍵/每個密鑰的值屬性,測試每個密鑰以查看它是否以"jQuery"
開頭。如果是,則返回true
,循環被打破。如果不是,則在全部屬性已經過測試後返回false
。
我會找到另一種方式。嚴重的是,不要這樣做。
如果您知道元素將出現在給定的父級下(與jQuery對話框一樣),您可以通過傳遞上下文來提高性能。儘管如此,儘管:) – 2010-10-28 16:01:14
@Steve - 你說得對,我忽略了這個問題是關於UI對話。限制元素將有所幫助,但正如你所說,仍然令人討厭。 – user113716 2010-10-28 16:12:00
如果我沒有從最後一個角度從另一個角度攻擊問題,這將是首選的方法(請參閱選中的答案)縮小查詢的上下文以包含其大小,儘管 – Jake 2010-10-28 16:20:01
fudgey - 不*完全無用*因爲OP想要定位那些以jQuery *開頭的類,但是肯定按類選擇會比過濾屬性名更好。 – user113716 2010-10-28 16:17:21
我最終採用了類似於此的解決方案: $(「:contains('Transfer')」,$(「。ui-button」,「.ui-dialog」))[0]。parentElement但我會切換到您的代碼 – Jake 2010-10-28 16:17:24
@patrick dw:你說得對我猜我的「完全無用」的聲明有點強烈。我只是想說,有更好的方法來做到這一點,感謝您的反饋:) – Mottie 2010-10-28 16:58:29