不存储在数组中

时间:2011-08-27 22:22:46

标签: jquery ajax

在我的页面上,我有:

        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 =抓取所有.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);

这将使用类newsletter_receiver_highlight

存储所有CURRENT元素的值

如果我稍后在请求响应中追加带有类newsletter_receiver_highlight的div元素,它将不会存储到数组

1 个答案:

答案 0 :(得分:0)

如果某些东西不起作用,请尝试不同的方法。我会使用map来获取ID数组。

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

而不是.each()