0

ID正規表現で要素を取得する必要があります。そのソースの解決策を見つけました:

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));
}

誰もが正常に動作していると主張していますが、単純なコードを実行しようとする$(':regex[id,^node\-[0-9]+\-[0-9]+$]')と、メソッドが存在しないというエラーが match[3].split に表示されます。実際、この関数の最初の行に console.log(match) を追加したところ、次のようになりました。

[":regex", "regex", undefined, undefined, index: 0, input: ":regex[id,^node-[0-9]+-[0-9]+$]"]

私は何を間違っていますか?

4

1 に答える 1

2

正規表現を指定する[]代わりに使用しました()

$(':regex(id,^node\-[0-9]+\-[0-9]+$)')

デモ:フィドル

また、クラスセレクターや要素セレクターなどの他の高速セレクターと一緒に使用するか、少なくとも $('[id]:regex(id,^node-[0-9 ]+-[0-9]+$)')

于 2013-10-09T07:31:50.033 に答える