Как выбрать элемент по имени класса, используя 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 скрипт перед угловым скриптом....

Другие вопросы по тегам