Проверить атрибут div Jquery

У меня есть какой-то элемент, который выглядит так

<div class="section current" section="Email">

</div>

Мне нужно проверить, что раздел Электронная почта имеет класс CURRENT, и сделать что-то вроде

if ($('.section').attr(section == Email).hasClass('current')){
 // Do something...
}

Я знаю, что это неправильный синтаксис, но я хочу просто показать, что мне нужно?


person Schneider    schedule 31.07.2014    source источник
comment
Метод .attr() используется для получения или установки атрибута, он не используется для поиска элемента, соответствующего атрибуту. Вы читаете документацию по функциям, прежде чем их использовать, или просто молитесь, чтобы они делали то, что вам нужно?   -  person Barmar    schedule 31.07.2014
comment
section= не является допустимым html. Измените его на data-section=, чтобы сделать его действительным и сохранить то же поведение.   -  person Henri Hietala    schedule 31.07.2014
comment
Кроме того, даже если бы он выполнял поиск, аргумент (section == Email) не выполнял бы то, что вам нужно. Это сравнивает переменную с именем section с переменной с именем Email и передает либо true, либо false методу attr. Это просто базовый синтаксис Javascript, ничего общего с jQuery или селекторами.   -  person Barmar    schedule 31.07.2014


Ответы (3)


Вам нужно использовать attribute-equals-selector:

if($('.section[section="Email"]').hasClass('current')){
  //do something
}

Демо

person Milind Anantwar    schedule 31.07.2014
comment
Если вы измените его на data-section=Email, просто измените селектор следующим образом: $('.section[data-section=Email]') - person Henri Hietala; 31.07.2014
comment
@HenriHietala: раздел не является атрибутом данных. поэтому нет необходимости использовать данные. - person Milind Anantwar; 31.07.2014
comment
как я прокомментировал в вопросе, section= недействителен html, но data-section= действителен (html5). Конечно, нет необходимости делать действительный HTML, поскольку он работает и так. - person Henri Hietala; 31.07.2014

Вы можете взглянуть на селектор атрибутов jQuery:

http://api.jquery.com/attribute-equals-selector/

Я предполагаю, что вы можете решить свою проблему с помощью этого:

if($(".section[section='Email]" ).hasClass("current")){/**CODE**/}

Надеюсь это поможет!

person frikkievb    schedule 31.07.2014

Вы можете попробовать и так.

if ($('.section[section="Email"].current').length > 0) {

}
person Sandeep Pal    schedule 31.07.2014
comment
Это не сработает. Это проверяет объект jQuery, который всегда верен, даже если он ничему не соответствует. Вам нужно if($('.section[section="Email"].current').length > 0){ - person Barmar; 31.07.2014
comment
Да Бармар. благодарю вас. я просто забыл исправить. Спасибо, в любом случае - person Sandeep Pal; 31.07.2014