Как выбрать элемент по имени класса, используя jqLite?
Я пытаюсь удалить jquery из моего приложения Angular.js, чтобы сделать его легче, и вместо этого поместил jqLite в Angular. Но приложение интенсивно использует find('#id') и find ('.classname'), которые не поддерживаются jqLite, только "имена тегов" (согласно документации)
Интересно, что вы думаете, будет лучшим подходом, чтобы изменить это. Один из подходов, о которых я подумал, - это создание пользовательских тегов HTML например: изменить<span class="btn btn-large" id="add-to-bag">Add to bag</span>
в
<a2b style="display:none;"><span class="btn btn-large" >Add to bag</span></a2b>
а также
$element.find('#add-to-bag')
в
$element.find('a2b')
Какие-нибудь мысли? другие идеи?
Спасибо
Лиор
3 ответа
По сути, и как отметил @kevin-b:
// find('#id')
angular.element(document.querySelector('#id'))
//find('.classname'), assumes you already have the starting elem to search from
angular.element(elem.querySelector('.classname'))
Примечание. Если вы хотите сделать это на своих контроллерах, возможно, вы захотите взглянуть на раздел "Использование контроллеров правильно" в руководстве для разработчиков и реорганизовать логику представления в соответствующие директивы (например,
angualr использует более легкую версию jquery, называемую jqlite, что означает, что он не обладает всеми функциями jQuery. в документации angularjs есть ссылка на то, что вы можете использовать из jquery. Угловой элемент документов
В вашем случае вам нужно найти div с идентификатором или именем класса. для имени класса вы можете использовать
var elems =$element.find('div') //returns all the div's in the $elements
angular.forEach(elems,function(v,k)){
if(angular.element(v).hasClass('class-name')){
console.log(angular.element(v));
}}
или вы можете использовать гораздо более простой способ с помощью селектора запросов
angular.element(document.querySelector('#id'))
angular.element(elem.querySelector('.classname'))
это не так гибко, как JQuery, но что
Если elem.find()
не работает для вас, убедитесь, что вы включаете JQuery скрипт перед угловым скриптом....