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