所以我有这个JS代码从php文件中提取JSON。这样可行。我要做的是在将JSON值放入DOM之前更改JSON值,以用低分辨率图像替换图像URL。您将在IF语句中看到调用 mobile()函数
的开头我们走了:
$.post(url, project, function(data, textStatus) {
$(data.tags).each(function(i, item){
projectTags += "<span class='project-tag'>"+item+"</span>";
});
$(data.slides).each(function(i, item){
if ((mobile() == true && $(window).width() <= 680)){
if (i != 0){
console.log('Before' +item);
var newItem = JSON.stringify(item);
$(newItem).replace('.png','-lofi.png');
console.log(newItem);
console.log('After' + item);
}
}
projectImages += "<div class=\"slide-container\">" + item + "</div>";
console.log(projectImages);
});
setTimeout(function(){
btnAbout.removeClass('active');
sectionDetail
.attr('data-id', data.id)
.find('.project-name').html(data.name).end()
.find('.project-year').html(data.year).end()
.find('.project-agency').html(data.agency).end()
.find('.project-details').html(data.details).end()
.find('.project-tags').html(projectTags).end()
.find('#slideshow').html(projectImages);
}, "json");
是什么给出的?如果它是一个小于iPad的移动设备,我想要做的就是替换JSON值的URL。
编辑:由James修正!谢谢哥们儿!以下最终法典。
$.post(url, project, function(data, textStatus) {
$(data.tags).each(function(i, item){
projectTags += "<span class='project-tag'>"+item+"</span>";
});
$(data.slides).each(function(i, item){
var loFi = JSON.stringify(item);
if ((mobile() == true && $(window).width() <= 680)){
if (i != 0){
loFi = loFi.replace(/(.png)/g,'-lofi.png')
loFi = $.parseJSON(loFi);
item = loFi;
}
}
projectImages += "<div class=\"slide-container\">" + item + "</div>";
});
setTimeout(function(){
btnAbout.removeClass('active');
sectionDetail
.attr('data-id', data.id)
.find('.project-name').html(data.name).end()
.find('.project-year').html(data.year).end()
.find('.project-agency').html(data.agency).end()
.find('.project-details').html(data.details).end()
.find('.project-tags').html(projectTags).end()
.find('#slideshow').html(projectImages);
}, "json");
答案 0 :(得分:2)
应该是:
var newItem = JSON.stringify(item);
newItem = newItem.replace('.png','-lofi.png');
您忘记将'replace'的结果赋给变量,而不需要在$(..)中包装newItem,replace是一个String
对象函数。
PS。您可能也不需要stringify
。你的物品不是一个字符串吗?
答案 1 :(得分:1)
$(data.slides).each(function(i, item){
var newItem = JSON.stringify(item); <-- Add this early
if ((mobile() == true && $(window).width() <= 680)){
if (i != 0){
console.log('Before' +item);
newItem = newItem.replace(/(.png)/g,'-lofi.png');
console.log(newItem);
console.log('After' + item);
}
}
您还在这里添加常规项目吗?您对项目所做的任何更改都不会反映出来。
projectImages += "<div class=\"slide-container\">" + item + "</div>";
更改为
projectImages += "<div class=\"slide-container\">" + newItem + "</div>";