2011-09-29 6 views
15

文字列で始まる属性を持つ要素を見つけるセレクタを作成したいと思います。この時点で、私はこのセレクタが存在しないと仮定しています。 セレクタ機能を拡張する必要がありますか? Extending jQuery’s selector capabilities James Padolseyjqueryを使用してプレフィックスと一致するdata- *属性を含む要素を見つけるには

属性の接頭辞セレクタ[name | = "value"]のような表現が必要ですが、 "value"と一致するのではなく、属性の名前と一致する必要があります属性の値。

<tag data-plugin-option1="val1" data-plugin-option2="val2" />

私はこのような構文で終わるしたい:私は私を推測、それはまあdata-plugin

+2

私はそれだけでHTML 5で、私は今覚えていないことができてきたかもしれないが、 '.dataのは、()'、自動的にこれらを解析考えます –

+2

@Pekka:OPは、一致する属性名(または部分名)を持つ*要素*を返すセレクタを探していると思います。 – user113716

+0

はい、私は要素を返すセレクタを探しています。 – JJS

答えて

11

で始まる少なくとも一つの要素を持っているので、要素tagを見つける必要があります $('tag(:attr|="data-plugin")')あなたの質問を別に読んでいます。

私はそれを読んで、あなたは与えられた属性名(またはその名前の先頭)を持つ要素を選択するカスタムセレクタを作成したいと思います。

もしそうなら、各要素のattributesコレクションを繰り返す必要があると思います。

DEMO:http://jsfiddle.net/GgmM7/

$.extend($.expr[':'],{ 
    attrNameStart: function(el,i,props) { 

     var hasAttribute = false; 

     $.each(el.attributes, function(i,attr) { 
      if(attr.name.indexOf(props[3]) !== -1) { 
       hasAttribute = true; 
       return false; // to halt the iteration 
      } 
     }); 

     return hasAttribute; 
    } 
}); 

$('img:attrNameStart(data-plugin)') 
+0

これは美しいコードです。どうして私がなぜ不在であるのかわからないので、DOM要素の 'attributes'プロパティを忘れてしまいました。本当にありがとう! – JJS

+0

@JJS:ようこそ。 – user113716

+0

ちょうど素晴らしい。ありがとう。 – itslittlejohn

関連する問題