web-dev-qa-db-ja.com

属性値によるjQueryフィルター

<div class="selectedColumns" >
<a href="#" attributeid="19" >Driver License State</a>
<a href="#" attributeid="21" >Email</a>
<a href="#" attributeid="23" >Experience Level</a>
<a href="#" attributeid="26" >First Name</a>
<a href="#" attributeid="71" >Is Account Enabled</a>
<a href="#" attributeid="39" >Last Contacted Date</a>
<a href="#" attributeid="40" >Last Name</a>
<a href="#" attributeid="41" >Middle Name</a>
<a href="#" attributeid="6">Carrier</a>
</div>

リンク集があります。各リンクには、attributeidプロパティがあります。属性値でフィルタリングしたいのですが。したがって、上記のリンクで値41を指定すると、ミドルネームのリンクが返されます。

var link = $('.selectedColumns a:[attributeid==' + $(this).val() + ']');

これはうまくいきませんでしたか?

21
Mark

2の代わりに単一の=を使用します。また、:

var link = $('.selectedColumns a[attributeid=' + $(this).val() + ']');
22
Tjirp

これを主張することはエレガントではありませんが、コレクションでfilter()を使用すると、一致させる対象の柔軟性が大幅に向上し、文字列連結よりもエラーが発生しにくくなります。

var matching = $('.selectedColumns a').filter(function(){
                   return $(this).attr('attributeid') == 41
                });
    matching.prop('selected', true);
34
Jeff Lowery

attribute-equals selector:やdouble =は必要ありません。次のようにする必要があります。

$('.selectedColumns a[attributeid=' + $(this).val() + ']');

また、無効な属性を使用している場合は、HTML5で有効な data- attributes whichareの使用を検討してください。たとえば、 attributeidの代わりにdata-id

19
Nick Craver