2012-03-30 43 views
0

这是我的HTML。格式化的道歉 - 这是我的第一个问题!JQuery - 如何编辑克隆对象元素的值?

<div id="Template"> 
        <table cellspacing="0" width="100%"> 
         <tr valign="top"> 
           <td> 
            <span class="Name" ></span> 
            (<span class="Id"></span>) 

             <span class="Addr" ></span><br> 
             <span class="City" ></span>,&nbsp; 
             <span class="State" ></span>&nbsp; 
             <span class="Zip" ></span><br> 
           </td> 
        </tr> 

        </table> 


这里是我的JQuery至今:

$.getJSON(serverURL,{ id: X }, 
     function(data) { 

      $.each(data, function(key,val){ 
       var clonedDiv= $('#Template').clone(); 

       //"Each" below represents the various data members of the object currently being processed. 
       $.each(val,function(key2,value){ 

        //Below are the only Keys needed so skip the rest. 
        if (key2=='Id' || key2=='Name' || key2=='Addr' || key2=='City' || key2=='State' || key2=='Zip'){ 
         alert('Key2:'+key2+' val2:'+JSON.stringify(value)); 
       ///INSERT VALUE INTO NEWLY-CLONED DIV SPAN CHILD HERE???  
        } 

       }); 
       $('#TemplatePrev').append(clonedDiv); 
      }); 
     }) 
.success(function() { 
    alert('success'); 
}) 
.error(function() { alert('error'); }) 
.complete(function() { 
    //alert('complete'); 
}); 

当以上运行时,存在由JSON调用返回10个对象和JQuery的克隆10倍的DIV看起来像#Template div。但是,我需要将该JSON字符串化的值动态地推送到每个范围中。任何想法如何做到这一点?我已经在这里2小时,然后分解并在这里发布。提前致谢!

+0

它通常是一种值得推荐的做法有一个HTML文档中的单个ID,你的情况,你会拥有10'#Template',使用类,而不是为了你自己好:) – 2012-03-30 02:56:26

+0

是的,当然。我将动态地为该“模板”的末尾分配一个数字,以便生成10个唯一的ID值。感谢您指出了这一点! – 2012-03-30 03:37:52

回答

0

你试过以下吗?

if (key2=='Id' || key2=='Name' || key2=='Addr' || key2=='City' || key2=='State' || key2=='Zip'){     
    clonedDiv.find('.' + key2).text(JSON.stringify(value)); 
} 
0

像这样的东西可能:

clonedDiv.find('span.'+key2).text(JSON.stringify(value)); 
+0

他们都会一样! – 2012-03-30 03:00:16

+0

修正了它!现在他们不会:-) – 2012-03-30 03:14:31

+0

工作 - 谢谢! – 2012-03-30 03:20:24

0

显而易见的解决方案是使用模板解决方案,这是否适合你。想到一对夫妇是Handlebars,PureUnderscore Templates

否则这样的事情应该工作:

clonedDiv.find("." + key2).text(value)

而且@andreas是对的复制ID,尽量避免。

+0

谢谢 - 这也有用!我正在尝试投票......但它“需要15点声望”。我==福利局。 – 2012-03-30 03:29:44

+0

哈哈,谢谢。 :) – 2012-03-30 03:42:27

0
<script type="text/javascript"> 
    $(document).ready(function() { 
    makeClone(); 

}); 
function makeClone() { 
    for (i = 0; i < 5; i++) { 
     var cloneing = $('.divclone').clone(); 
     $('#container').append(cloneing.removeClass().attr("id",'new'+i)); 
    } 
} 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div id="container" > 
<div class="divclone"> 
this is it 
</div> 
</div> 
+0

我希望能做到这一点。现在你有克隆div的不同ID,你可以操作,因为你希望。 – 2012-03-30 04:44:56

+0

感谢您的提示! – 2012-03-30 20:39:06