J'essaie de supprimer tous les éléments de la même classe mais laisse le premier. Comment puis-je y parvenir en angulaire?

var myElement = angular.element( document.querySelector( 'myclass') );
myElement.not(':first').remove()   //removes element

Voici l'erreur que j'obtiens: ionic.bundle.js: 21157 TypeError: myElement.not n'est pas une fonction

1
Jason 8 août 2016 à 21:17

3 réponses

Meilleure réponse

La fonction .not() n'est pas définie dans jqLite, angular.element, selon ceci docs, n'implémente pas tous les sélecteurs et méthodes jQuery.

MISE À JOUR 1

Voici un exemple.

var myElements = document.getElementsByClassName( 'myclass');

myElements = Array.prototype.slice.call( myElements ); // convert htmlcollection to array
myElements = myElements.splice(0, 1); //removes first from working list

angular.element(myElements).remove();   //removes remaining elements from the DOM
1
lenilsondc 8 août 2016 à 19:00

Si vous convertissez la NodeList retournée par document.querySelector en un tableau, vous pouvez décaler la première valeur indexée puis faire un .remove sur le reste.

var elements = [].slice.call(document.querySelectorAll(".myclass"));
elements.shift(); // remove first item in the array
for (var i=0; i < elements.length; i++) {
    angular.element(elements[i]).remove(); // remove each element from the DOM
}
0
Dr. Cool 8 août 2016 à 18:34

Créez d'abord un clone du premier élément.

first_element = myElement[0].clone

Supprimez la collection et utilisez le premier_élément. Si vous utilisez un trait de soulignement, vous pouvez également procéder comme ci-dessous.

_.filter(myElement, function(element,index){ return index == 0; });
0
Muaaz Rafi 8 août 2016 à 18:35