在编写页面列表时,有个动态添加元素的需求,需要按照元素的某个属性排序,如果当前元素存在,则直接修改用于标示个数的属性,否则需要按照元素的一个属性查找到合适的位置,新建元素并插入。
具体代码如下:
function updateHTMLInfor(jsonObj,divId,allDivId){ if(jsonObj.dataId!=null&&jsonObj.dataId>0){ var divDataId=divId+jsonObj.dataId; var dataDiv=$("#"+divDataId); if(dataDiv!=null) { var dataNum=dataDiv.attr('num'); if(dataNum!=null&&dataNum>0) { if(jsonObj.dataNum!=null&&jsonObj.dataNum>0){ if(jsonObj.dataName!=''&&jsonObj.dataName!=null){ dataNum=parseInt(dataNum)+parseInt(jsonObj.dataNum); dataDiv.attr('num',dataNum); var dataDivText=jsonObj.dataName+" "+dataNum; dataDiv.text(dataDivText); } } }else{ appendHTMLDiv(jsonObj,allDivId) } } else{ appendHTMLDiv(jsonObj,allDivId) } } } function appendHTMLDiv(jsonObj,allDivId) { var allDataDiv=$("#"+allDivId); var divHtml="<div class='css_class' price='"+jsonObj.dataPrice+"'>"; divHtml+="<div class='css_class1'><img src='"+jsonObj.dataUrl+"'"+ "alt='"+jsonObj.dataName+"' width='69' height='62'/> </div>"; divHtml+="<div id='data_"+jsonObj.dataId+"' num='"+jsonObj.dataNum+"' price='"+jsonObj.dataPrice+"' class='css_class2'>"+ jsonObj.dataName+" "+jsonObj.dataNum +"</div>"; divHtml+="</div>"; var newDataDiv=$(divHtml); var price=jsonObj.dataPrice; var dataDivArray=allDataDiv.children(); var insertDiv=null; for(var i=0;i<dataDivArray.length;i++) { var dataPrice=dataDivArray[i].getAttribute("price"); if(dataPrice<price) { insertDiv=dataDivArray[i]; break; } } if(insertDiv!=null) { newDataDiv.insertBefore(insertDiv); } else { allDataDiv.append(divHtml); } }