Programador Piensa

¿Hay alguna forma en jQuery de hacer un bucle o asignar todas las clases asignadas a los elementos a arrays?

por ejemplo

<div class="Lorem ipsum dolor_spec sit amet">Hello World!</div>

Buscaré las clases «especiales» en la «Dolor spec» de arriba. Sé que puedo usar hasClass (), pero el nombre real de la clase puede no ser conocido en ese momento.

#1 edificio

Por qué nadie simplemente listas.

$(element).attr("class").split(/\s+/);

Editar: como @ mark Amery señala, no se puede simplemente. split(‘) porque los nombres de las clases pueden ser separados por cualquier tipo de espacio.

#2 building

var classList = $(element).attr('class').split(/\s+/);$(classList).each(function(index){ //do something});

#3 building

Este es un plug-in de jQuery-in que devolverá un array de todas las clases que tiene el elemento coincidente

;!(function ($) { $.fn.classes = function (callback) { var classes = ; $.each(this, function (i, v) { var splitClassName = v.className.split(/\s+/); for (var j = 0; j < splitClassName.length; j++) { var className = splitClassName; if (-1 === classes.indexOf(className)) { classes.push(className); } } }); if ('function' === typeof callback) { for (var i in classes) { callback(classes); } } return classes; };})(jQuery);

Úsalo así

$('div').classes();

Por lo que a ti respecta

También puedes pasar funciones a métodos para ser llamados en cada clase

$('div').classes( function(c) { // do something with each class });

Este es el jsFiddle que monté para demostración y pruebas http://jsfiddle.net/GD8Qn/8/

Streamline Javascript

;!function(e){e.fn.classes=function(t){var n=;e.each(this,function(e,t){var r=t.className.split(/\s+/);for(var i in r){var s=r;if(-1===n.indexOf(s)){n.push(s)}}});if("function"===typeof t){for(var r in n){t(n)}}return n}}(jQuery);

#4 building

Puedes usar document.getElementById(‘divId’).className.split(/\s + /); para obtener una matriz de nombres de clase.

Luego, puedes iterar y encontrar la que necesitas.

var classList = document.getElementById('divId').className.split(/\s+/);for (var i = 0; i < classList.length; i++) { if (classList === 'someClass') { //do something }}

jQuery realmente no te ayuda

var classList = $('#divId').attr('class').split(/\s+/);$.each(classList, function(index, item) { if (item === 'someClass') { //do something }});

#5 construyendo

$('div').attr('class').split(' ').map(function(cls){ console.log(cls);})

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *