【发布时间】:2011-05-01 22:05:38
【问题描述】:
我想选择属性名称(键)以集合字符串开头的元素。用例:jQuery UI dialog 创建按钮,其唯一标识符是具有顺序值的伪随机自定义属性,例如 jQuery1288273859637="40"
我想根据属性的 name 是 jQuery*(以 jQuery 开头)这一事实进行选择
【问题讨论】:
标签: jquery css-selectors custom-attributes
我想选择属性名称(键)以集合字符串开头的元素。用例:jQuery UI dialog 创建按钮,其唯一标识符是具有顺序值的伪随机自定义属性,例如 jQuery1288273859637="40"
我想根据属性的 name 是 jQuery*(以 jQuery 开头)这一事实进行选择
【问题讨论】:
标签: jquery css-selectors custom-attributes
获取对话框的引用,然后使用 css 选择器找到按钮。 firebug(或 google chrome 开发者工具)对于确定要查找的内容很有用。
【讨论】:
我唯一想到的就是测试.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 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 或类并使用它!
如果您需要定位对话框中的按钮,请使用以下内容:
$('.ui-dialog .ui-button:contains("Cancel")')
【讨论】: