Страницы

Поиск по вопросам

среда, 17 апреля 2019 г.

jquery: не работает выбор элемента по классу и атрибуту одновременно

Пытаюсь выбрать все элементы, у которых есть класс choosen и атрибут repeattype. По отдельности работает, а оба условия сразу - нет:
// все элементы с классом "choosen" var allChoosen = $('.choosen'); console.log(allChoosen.length); // 1 элемент, как и ожидается // все элементы с атрибутом "repeattype" var allRepeattype = $('[repeattype]'); console.log(allRepeattype.length); // 2 элемента, как и ожидается // одновременно не получается: var choosenAndRepeat = $('.choosen [repeattype]'); console.log(choosenAndRepeat.length); // 0 элементов почему-то // пробовал поиск в выбранных (choosen) // для наглядности сам элемент: console.log(allChoosen[0]); // значение атрибута достать можно: console.log(allChoosen[0].getAttribute('repeattype')); // но поиск в choosen по имени атрибута не работает: console.log(allChoosen.find('[repeattype]').length); // 0

1
2


Ответ

У вас неправильно составлен селектор. .choosen [repeattype] означает элементы с атрибутом repeattype, являющиеся потомками элементов с классом choosen
Аналогично работает allChoosen.find('[repeattype]')
Если необходимо находить элементы с классом choosen и атрибутом repeattype необходимо указывать их в селекторе без пробела .choosen[repeattype]. Если необходимо находить элементы с классом choosen или элементы атрибутом repeattype, то необходимо ставить запятую .choosen, [repeattype]
См. также:
Знаете ли вы селекторы? Multiple Class / ID and Class Selectors (на английском)

Комментариев нет:

Отправить комментарий