我正在以响应式Wordpress主题在Instagram画廊工作,发现了一些我想寻求帮助的问题。
我正在使用ajax和jsonp获取Instagram feed,并将结果附加到几个空的div中。我使用的简化代码是:
$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/accesstoken",
success: function(data) {
for (var i = 0; i < 7; i++) {
var boxitem = "#instabox" + i;
$(boxitem).append("<a target='_blank' href='" + data.data[i].link +"'><img src='" + data.data[i].images.low_resolution.url +"'/></a>");
}
}
该脚本将每张Instagram图片分配给特定的div(“ id = instabox1”,“ id = instabox2”,依此类推)。这段代码运行良好。
现在,我想使用jQuery Backstretch plugin来使图片响应。为了使其工作,我只需要使用代码:
$("#instabox0").backstretch("http://server/instagrampicture.jpg");
这行代码可以正常工作,以便正确加载backstretch.js并可以正常工作。
这就是我遇到的问题。我想从Instagram获取最新的照片,并通过动态地将它们分配给backstretch插件来使其具有响应性。我尝试的第一件事是在成功部分的ajax函数中调用backstretch方法:
$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/accesstoken",
success: function(data) {
for (var i = 0; i < 7; i++) {
var boxitem = "#instabox" + i;
$(boxitem).backstretch(data.data[i].images.low_resolution.url);
} }
鉴于data.data [i] .images.low_resolution.url为图像提供了正确的路径,我认为这会将backstretch方法应用于boxitem(#instabox0,#instabox1,...)定义的ID,以便div将按顺序填充。
那是不起作用的部分,给出一个错误:
未捕获的TypeError:对象[object Object]没有方法'backstretch'
因此,如果我在$ .ajax函数之外使用方法.backstretch,它可以正常工作(但随后我无法获得Instagram图片的动态路径)。
如果我在$ .ajax函数中使用方法.backstretch,则会出现上述错误。
我已经尝试了很多事情,例如动态地将反拉伸图像的代码行编写为字符串,将它们存储在数组中以及ajax函数外部,并对其进行评估:
strScript = '$("#instabox' + i + '").backstretch("' + data.data[i].images.low_resolution.url + '");';
eval(strScript);
但我总是收到“没有方法'backstretch'”错误消息。
我还创建了一个脚本部分,并使用适当的反拉伸动态生成的代码填充了它,例如:
<script>
$("#instabox0").backstretch("http://server/instagrampicture0.jpg");
$("#instabox1").backstretch("http://server/instagrampicture1.jpg");
</script>
但随后在页面加载时不执行。
有什么帮助吗?如何在Ajax jsonp函数中使用.backstretch方法?
如果我使用其他方法来获取Instagram照片,会更容易吗?
我可以创建脚本部分,但是当页面已加载后如何执行呢?
非常感谢,我不是专业的程序员,所以我对此问题有些困惑。对于你们来说,我可能已经忽略了一些显而易见的事情,但是我已经尝试了好几天了。
任何帮助将不胜感激。
最佳答案
我要做的是在Ajax循环中构建一个图像URL数组,您可以在调用.backstretch()时在其中使用它。
var images = [];
success: function(data) {
for (var i = 0; i < 7; i++) {
images.push(data.data[i].images.low_resolution.url);
}
}
$.each(images, function(index, value) {
var boxitem = "#instabox" + index;
$(boxitem).backstretch(value);
});
关于wordpress - 如何在$ .ajax函数内使用backstretch插件方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13544664/