从每个循环创建一个数组

时间:2013-05-12 13:40:51

标签: jquery arrays each

如何从每个循环完成一个数组,然后在带有ajax的帖子中传递它?现在它只是为每个元素创建一个数组,并且不向ajax发布任何内容。

$('a#export').on('click',function(){

    $('[id^="imgHolder"], [id^="textHolder"]').each(function(){

        TextElementID = $(this,'[id^="textHolder"]').attr('id');
        TextElementContent = $(this,'[id^="textHolder"]').text();   

    TextObjects = new Array(TextElementID, TextElementContent);   

        ImgSrc = $('img',this,'[id^="imgHolder"]').attr('src');
        ImgHolderID = $(this,'[id^="imgHolder"]').attr('id');
        ImgHolderClass = $(this,'[id^="imgHolder"]').attr('class');            

    ImgObjects = new Array(ImgHolderID, ImgHolderClass, ImgSrc);

        });

        $.ajax({
            url: "post.php",
            type: "post",
            data: { 
                ExportObjects: ImgObjects
            },
            success: function(){
               alert("success");
            },
            error: function(){
                alert("failure");
            }   
              });

    });

1 个答案:

答案 0 :(得分:1)

这有几个问题。您正在初始化每个中的数组,并最终将覆盖值。此外,您正在对文本执行每个操作,并且图像正在循环中收集文本和图像的值,并最终会重复。这是fiddle的工作版本。

var ImgObjects = new Array();
$('[id^="imgHolder"]').each(function(){
    ImgSrc = $('img',this,'[id^="imgHolder"]').attr('src');
    ImgHolderID = $(this,'[id^="imgHolder"]').attr('id');
    ImgHolderClass = $(this,'[id^="imgHolder"]').attr('class');            
ImgObjects.push(ImgHolderID, ImgHolderClass, ImgSrc);
    });

var TextObjects = new Array();
$('[id^="textHolder"]').each(function(){
    TextElementID = $(this,'[id^="textHolder"]').attr('id');
    TextElementContent = $(this,'[id^="textHolder"]').text();   
    TextObjects.push(TextElementID); 
    TextObjects.push(TextElementContent);
});