2014-11-26 3 views
0

Я работаю с angularJS и хотел бы удалить/изменить класс определенного дочернего элемента (кто является классом/id неизвестен, поскольку он динамически добавляется к родительскому элементу).Поиск определенного тега элемента в angularJS

Я понимаю, что с помощью угловых вы можете сказать что-то вроде:

angular.element('someknownParentClass').addClass('newClass'); 

Однако, я хочу сделать что-то похожее на:

angular.element('.someknownParentClass').find('i').addClass('newClass'); 

Класса «someknownParentClass» класс, присвоенный тег 'a', и внутри этого тега у меня есть тег 'i' с классом значков glyphicon, который я хотел бы изменить изнутри определенной функции. Похоже, этот метод не работает. Я знаю, что jQLite у углового имеет атрибут children(), но я немного не уверен, как его использовать или если он будет полезен в этом случае, или, может быть, использование jQuery с угловым будет моим лучшим вариантом (из того, что я понимаю, это отличается от jqLite). Какие-либо предложения?

+0

Спасибо @JonathanLonowski, я отредактировал сообщение для синтаксических изменений, которые я не заметил вначале. Что касается глификонов, я планировал сначала удалить класс перед добавлением нового, я просто решил перефразировать немного для публикации. – Dan

ответ

0

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

var elem = angular.element('.someknownParentClass'); 
var iElems = elem.children('i'); 
iElems.addClass("newClass"); 

Если вы более комфортно в JQuery, я не вижу проблемы в используя его в угловой директиве. Согласно документации, angular.element является псевдонимом для JQuery: https://docs.angularjs.org/api/ng/function/angular.element

$('.someknownParentClass').find('i').addClass("newClass"); 
+0

Подробнее о JQLite https://code.google.com/p/jqlite/wiki/UsingJQLite – Ghan

0

Вы не должны использовать angular.element, если вы делаете вещи в директиве. Если вы хотите использовать angular.element в коде, вам, вероятно, лучше использовать jQuery. Я собрал образец jsfiddle, который связывает директиву заранее определенный класс (некоторый известный родитель класс) и ищет для всех «Я» элементов под ним и добавляет класс NewClass к нему:

var mod = angular.module("myApp", []); 
mod.directive("someKnownParentClass", function() { 
    return { 
     restrict: "C", 
     link: function (scope, element, attrs) { 
      element.find("i").addClass("newClass"); 
     } 
    } 
}); 

Таким образом, вы развязываете прямую манипуляцию DOM (например, angular.element) с помощью директивы для манипуляции. Fiddle here.

Смежные вопросы