我想选择具有以设置字符串开头的属性名称(键)的元素。使用案例: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