2010-10-28 59 views
0

我想選擇具有以設置字符串開頭的屬性名稱(鍵)的元素。使用案例:jQuery UI dialog創建按鈕,其唯一的獨特identifers是有順序的值,如jQuery1288273859637="40"我可以在jQuery中查詢屬性鍵通配符嗎?

我想基於一個事實,即屬性的是jQuery的*選擇一個僞隨機的自定義屬性(開始與jQuery)

回答

0

你正在尋找的屬性是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")') 
+0

fudgey - 不*完全無用*因爲OP想要定位那些以jQuery *開頭的類,但是肯定按類選擇會比過濾屬性名更好。 – user113716 2010-10-28 16:17:21

+0

我最終採用了類似於此的解決方案: $(「:contains('Transfer')」,$(「。ui-button」,「.ui-dialog」))[0]。parentElement但我會切換到您的代碼 – Jake 2010-10-28 16:17:24

+0

@patrick dw:你說得對我猜我的「完全無用」的聲明有點強烈。我只是想說,有更好的方法來做到這一點,感謝您的反饋:) – Mottie 2010-10-28 16:58:29

0

獲取對話框的引用,然後使用css選擇器來查找按鈕。螢火蟲(或谷歌瀏覽器開發者工具)可用於確定要查找的內容。

+1

這是行不通的 - 在OP正在尋找屬性名*開始使用jQuery - 我做同樣的錯誤 – 2010-10-28 14:37:08

+0

你是對的,史蒂夫。 OP意味着/代表什麼? – Jake 2010-10-28 14:41:06

+0

啊對,編輯我的迴應反映了這一點。 – 2010-10-28 14:42:25

2

只想到我能想到的是測試.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

我會找到另一種方式。嚴重的是,不要這樣做。

+1

如果您知道元素將出現在給定的父級下(與jQuery對話框一樣),您可以通過傳遞上下文來提高性能。儘管如此,儘管:) – 2010-10-28 16:01:14

+0

@Steve - 你說得對,我忽略了這個問題是關於UI對話。限制元素將有所幫助,但正如你所說,仍然令人討厭。 – user113716 2010-10-28 16:12:00

+0

如果我沒有從最後一個角度從另一個角度攻擊問題,這將是首選的方法(請參閱選中的答案)縮小查詢的上下文以包含其大小,儘管 – Jake 2010-10-28 16:20:01

相關問題