No almacenar en la matriz

En mi pagina tengo:

        function grabProfiles(searchstring) {
            $.post('newsletter.php?mode=grab', { search: searchstring }, function(data) {
                $('#newsletter_receivers').html(data);
            });
        }
        $('#newsletter_searchprofiles').bind('keyup', function() {
            var searchstring = this.value;
            grabProfiles(searchstring);
        });
        $(document).ready(function() {
            grabProfiles('');
        });

Esto genera el resultado en el elemento div #newsletter_receivers. El resultado se parece a esto:

<div class="receiver">
 Peter
</div>
<div class="receiver">
 Maria
</div>
<script>
$(".receiver").click(function () {
$(this).toggleClass("newsletter_receiver_highlight");
});
</script>

Entonces, cuando haga clic en uno de los receptores, se resaltarán. Esto funciona bien.

Ahora me gustaría poner el valor del atributo de identificación del receptor (el valor de identificación resaltado) en una matriz. Y luego alertar sobre este valor de matrices cuando haga clic en un botón de envío que existe en #newsletters_receivers. (no en el? mode = grab donde están todos los elementos .receiver)

Me gustó esto:

         $('#newsletter_send').click(function(){
                 alert($('div.newsletter_receiver_highlight').length+' Selected');
                var arr = [];
                $('div.newsletter_receiver_highlight').each(function(){
                    arr.push(this.id);
                });
                alert(arr);
         });

Esto me da dos alertas. El que es correcto, me da los números de cuántos están resaltados. ¡La segunda alerta que debería darme los valores está vacía!

Esto funcionó anteriormente cuando no hice una solicitud ajax para generar los elementos del receptor. Y creo que está vacío porque la primera vez que la página no contiene nada en #newsletters_receivers, hasta que realiza la solicitud ajax. Pero, ¿cómo puede saber entonces la longitud correcta?

¿Cómo puedo arreglar / hacer una solución para esto para que funcione?

// Pregunta de conclusión:

¿Por qué cada () no está vivo? y alternativas que este método?

ejemplo:

$('div.newsletter_receiver_highlight').each(function(){
    arr.push(this.id);
});
alert(arr);

esto almacena valor para todos los elementos ACTUALES con la clase newsletter_receiver_highlight

Si agrego un elemento div con la clase newsletter_receiver_highlight más tarde desde una respuesta de solicitud, no se almacenará en la matriz

preguntado el 27 de agosto de 11 a las 22:08

1 Respuestas

Si algo no funciona en primer lugar, intente siempre con un enfoque diferente. yo usaría map para obtener la matriz de identificadores.

var arr = $('div.newsletter_receiver_highlight').map( function() { return this.id; } ).get();

Esto viene en lugar de .each()

Respondido 28 ago 11, 02:08

¿Dónde debería tener esto? Traté de alret (arr) debajo de la alerta que muestra el seleccionado. Me da [Objeto objeto] .. Y por favor vea la pregunta actualizada, tal vez ayude más - Karem

En realidad, mi solución estaba incompleta. Perdido el .get() - Z. Zlatev

ok intenté esto, la matriz está vacía, no obtengo nada en la alerta. al igual que el each () - Karem

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.