2010-10-28 101 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

相关问题