Фильтр jQuery по значению атрибута - PullRequest
21 голосов
/ 28 декабря 2010
<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() + ']');

Это не сработало?

Ответы [ 3 ]

34 голосов
/ 05 февраля 2013

Не претендую на то, что это более элегантно, но использование filter () для коллекции дает гораздо большую гибкость в отношении того, с чем вы можете сопоставить, и менее подвержено ошибкам, чем конкатенация строк.

var matching = $('.selectedColumns a').filter(function(){
                   return $(this).attr('attributeid') == 41
                });
    matching.prop('selected', true);
21 голосов
/ 28 декабря 2010

используйте один = вместо 2. Кроме того,: не должно быть здесь afaik

var link = $('.selectedColumns a[attributeid=' + $(this).val() + ']');
18 голосов
/ 28 декабря 2010

Нет необходимости в : или двойном = в вашем атрибуте, равном атрибуту , просто должно быть:

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

Также, если вы используете недопустимые атрибуты, рассмотрите возможность использования data- атрибутов , которые являются действительными в HTML5, например data-id вместо attributeid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...