Не хранится в массиве - PullRequest
       1

Не хранится в массиве

0 голосов
/ 28 августа 2011

На моей странице у меня есть:

        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('');
        });

Это выводит результат в элементе div #newsletter_receivers.Результат выглядит примерно так:

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

Поэтому, когда вы нажимаете на один из приемников, они будут выделены.Это отлично работает.

Теперь я хотел бы поместить значение атрибута id получателя (выделенное значение id) в массив.А затем оповестите об этом значении массивов, когда вы нажмете кнопку отправки, которая существует под #newsletters_receivers.(не в? mode = grab, где находятся все элементы .receiver)

Я сделал так:

         $('#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);
         });

Это дает мне два оповещения.Один правильный, он дает мне количество подсвеченных.Второе предупреждение, которое должно дать мне значения, пусто!

Это работало ранее, когда я не сделал ajax-запрос для вывода элементов получателя.И я думаю, что это пусто, потому что в первый раз страница не содержит ничего в #newsletters_receivers, пока не выполнит запрос ajax.Но как тогда определить правильную длину?

Как мне исправить / сделать решение для того, чтобы это работало?

// Заключительный вопрос:

Почему каждый () не живет?и альтернативы этому методу?

пример:

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

это хранит значение для всех элементов CURRENT с классом newsletter_receiver_highlight

Если я добавляю элемент divс классом newsletter_receiver_highlight позже из ответа на запрос он не будет сохранен в массиве

1 Ответ

0 голосов
/ 28 августа 2011

Если что-то не работает, в первую очередь всегда старайтесь по-другому. Я бы использовал map, чтобы получить массив идентификаторов.

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

Это приходит вместо .each()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...