【发布时间】:2017-12-31 22:25:01
【问题描述】:
我正在从外部 javascript 文件将信息加载到我的页面。该文件在页面上查找具有特定类名的 div,然后根据自定义属性填充 div 的内容,该属性是 api 的链接。外部文件中的函数循环遍历每个带有类的 div,并动态填充 div 的 id。
这是我页面上 div 的代码:
<div class="classname" data-apisrc="www.someapi1.com" id="box1"></div>
<div class="classname" data-apisrc="www.someapi2.com" id="box2"></div>
<div class="classname" data-apisrc="www.someapi3.com" id="box3"></div>
这是外部文件中的代码:
$(function() {
$("div.classname").load("https://...somewebsite.com.html div.box-container");
var i=0;
var box = $("div.classname");
$(box).each(function(apisrc, div_id) {
i++;
var apisrc = $(this).attr("data-apisrc");
var div_id = 'box'+i;
$(this).attr('id',div_id);
$(this).val(i);
$this = $(this);
$.ajax({
type: "GET",
url: apisrc,
async: true,
success: function(result) {
...loads content into each div
},
error: function() {
$this.text("content could not be loaded");
//alert('error');
}
});
});
});
这是外部文件中唯一的函数。它在页面顶部的当前文件中被调用,但这不重要,因为该函数被包装在一个 document.ready 函数中
页面上有三个这样的 div。出于某种原因,它只显示来自第二个和第三个 div 的内容并跳过第一个,直到我重新加载页面几次。
我看不出我的功能有什么问题。有什么建议吗?
【问题讨论】:
-
您是否在代码的
...loads content into each div部分中使用了i? -
您正在做
$("div.classname").load(...以及一个ajax 调用来加载每个div 中的数据??如果您要在ajax的基础上进行一些增量更改,请在load(...完成后进行。 -
您已经在
$("div.classname")上执行load对吗?所以在发现你正在尝试加载之后。加载完成后查看我的答案。 -
??
var apisrc = ...、var div_id = ...覆盖传递给each的参数。apisrc包含 jQuery 对象中元素的索引,div_id包含元素本身,如果您使用参数,则根本不需要i... -
@Teemu 是的,她正在覆盖当前项目引用,然后使用
this引用当前项目。不需要那种压倒一切的!!
标签: javascript jquery html loops each