【问题标题】:jquery regex selectorjquery 正则表达式选择器
【发布时间】:2014-03-14 23:51:43
【问题描述】:

我想选择一些名称以 btn (btn1, btn2..) 开头的 html 元素

最有效的方法是什么

我尝试http://james.padolsey.com/javascript/regex-selector-for-jquery/,但没有成功

$(':regex(class,btn[0-9]').hover( function(){

// not selecting any "btn" class

}

【问题讨论】:

    标签: jquery regex jquery-selectors


    【解决方案1】:

    如果要选择所有具有以单词btn 开头的class 属性的元素:

    $( '[class^=btn]' )
    

    如果您想改用name 属性,只需换掉该属性即可:

    $( '[name^=btn]' )
    

    使用属性值开头的选择器:http://api.jquery.com/attribute-starts-with-selector/

    【讨论】:

    • 这是一个更好的答案。正则表达式很昂贵。编辑以更直接地回答问题。
    【解决方案2】:

    您正在做的是选择所有具有 btnX 类的元素,其中 X 可能是 0-9。

    要使用以“btn”开头的名称属性,您需要使用:

    $(':regex(name,^btn)').hover(function() { ... }, function() { ... });
    

    -- 编辑以包含 working jsFiddle demo--

    另外,别忘了把它放在你的页面上:

    jQuery.expr[':'].regex = function(elem, index, match) {
        var matchParams = match[3].split(','),
            validLabels = /^(data|css):/,
            attr = {
                method: matchParams[0].match(validLabels) ?
                            matchParams[0].split(':')[0] : 'attr',
                property: matchParams.shift().replace(validLabels,'')
            },
            regexFlags = 'ig',
            regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
        return regex.test(jQuery(elem)[attr.method](attr.property));
    }
    

    【讨论】:

    • 谢谢,我不知道我错过了什么,也许是 btn 之前的 ^
    • @N-AccessDev - 您正在使用$(':regex(class,btn[0-9])'),它正在寻找所有具有 class 名称为 btn0 的 HTML 元素btn9。我的使用$(':regex(name,^btn)'),它正在寻找所有具有以 btn 开头的 name 的 HTML 元素。
    • @N-AccessDev - 也就是说,我同意 Eli 的观点,即 :regex 处理事情的方式比仅使用正确的选择器要慢得多。但是,他的回答是错误的,因为您正在寻找以“btn”名称开头的所有 HTML 元素。这意味着您应该使用$('[name^="btn"]')。这将是选择这些特定元素的最有效方式。
    • 这个正则表达式版本真的可以帮到我,因为我需要选择具有特定格式且其中包含变量的对象。感谢您的提示。
    【解决方案3】:

    我怀疑正则表达式是最有效的方法,但是您是否将正则表达式选择器添加到代码中? :regex 不是内置选择器,因此您需要在脚本中包含文章顶部的 sn-p。

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 2012-06-12
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2016-01-19
      • 1970-01-01
      相关资源
      最近更新 更多