下面是我使用官方jQuery模板插件的一些函数,并插入一些JSON,我的后端开发人员正在var
s topPages
和latestPages
中提供给我,但出于某种原因,我调用insertOrHideList()
函数,然后出于某种原因调用它正在承载renderList()
属性的正常max
函数。因此,而不是获得100
结果(请参阅renderList()
的第2行即时5
查看底部的insertOrHideList()
来电)
有什么想法吗?
function renderList(json,max){
if(!max){max=100}
tempjson = json;
tempjson.length = max;
the_template = $.template(null, '<li><a href="{{if CONTENT_ID}}article/${CONTENT_ID}{{else}}${CATEGORY_TREE_ID}{{/if}}" title="Go to the ${TITLE} page">${TITLE}</a></li>');
return $.tmpl(the_template,tempjson);
}
function insertOrHideList(selector,json,max){
if(!max){max=5}
if(typeof json !== 'undefined' && json.length >= 5){
$(selector).append(renderList(json,max));
}
else{
$(selector).parent().remove();
}
}
insertOrHideList('.most-popular ol',topPages,5);
insertOrHideList('.recently-added ol',latestPages,5);
console.log(renderList(latestPages));
答案 0 :(得分:3)
执行此操作时:
tempjson = json;
全局tempjson
数组设置为与json
(latestPages
)相同的引用,因此您对其进行的更改将与原始数据进行更改。要获得一个新的数组,你需要制作一个副本,如下所示:
var tempjson = json.slice(0);
注意var
的添加,这样我们就不会创建一个全局变量(这里是一个单独的问题)。
答案 1 :(得分:1)
看起来你正在通过这条线:
$(selector).append(renderList(json,max));
从调用insertOrHideList开始,它将是5。你真的在追求:
$(selector).append(renderList(json,json.length));
答案 2 :(得分:0)
if(typeof json !== 'undefined' && json.length >= 5){
$(selector).append(renderList(json,max));
}
应该是:
if(typeof json !== 'undefined' && json.length >= max){
$(selector).append(renderList(json,json.length));
}