Подтвердить что ты не робот

Фильтр 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, оно вернет ссылку Middle Name.

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

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

4b9b3361

Ответ 1

используйте сингл = вместо 2. Также: shoudn't be afaik

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

Ответ 2

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

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

Ответ 3

Нет необходимости в : или double = в селектор атрибутов-атрибутов, он должен быть только:

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

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