我可以在jQuery中查询属性键通配符吗?

时间:2010-10-28 14:14:41

标签: jquery css-selectors custom-attributes

我想选择带有以字符串开头的属性名称(键)的元素。使用案例:jQuery UI dialog创建按钮,其唯一唯一标识符是伪随机自定义属性,其序列值为jQuery1288273859637="40"

我想基于属性的名称是jQuery *(以jQuery开头)这一事实进行选择

3 个答案:

答案 0 :(得分: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 :(得分:0)

获取对话框的引用,然后使用css选择器查​​找按钮。 firebug(或谷歌浏览器开发人员工具)对于确定要查找的内容非常有用。

答案 2 :(得分:0)

您正在查看的属性是jQuery expando ...将“jQuery”基于当前时间后的数字以及每次重新加载页面时的更改({{3} }&amp; ref1)。

最好在基础HTML中定位一个类。例如,jQuery UI对话框应具有此基本HTML(ref2):

<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")')