我正在使用 django 1.5,python 2.7和jquery 1.9 。虽然此问题主要与 javascript 相关。
我的HTML代码如下。这形成了一个对象列表,如:
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
现在当我通过ajax获得更多数据时,形成的结构是这样的:
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls"> #new div
<div class="item cls"> #new div
<div class="item cls"> #new div
<div class="item cls"> #new div
HTML:
{% for obj in objs %}
<div class="item cls">
<div class="alpha"><a href="#"><img src="{{ STATIC_URL }}img/107.png" /></a></div>
<div class="span6" id="abc_{{ obj.id }}">
<h2 class="Title"><a href="#">{{ obj.t }}</a></h2>
<p>{{ obj.a }}</p>
<div class="tags">
<a href="#"><i class="icon"></i> Intel</a>
<a href="#"><i class="icon"></i> Architecture</a>
</div>
<a href="#" class="btn"><i class="icon"></i> Upload </a>
<a href="#" class="btn"><i class="icon"></i> Download </a>
</div>
</div>
{% endfor %}
AJAX成功:
for(var i = 0; i < response.length; i++){
var divs = document.getElementsByClassName('item');
divs[parseInt(divs.length)-1].innerHTML = '<div class="item cls"><div class="alpha"><a href="#"><img src="{{ STATIC_URL }}img/107.png" /></a></div><div class="span6" id="abc_' + response[i].id + '"><h2 class="Title"><a href="#">' + response[i].t + '</a></h2><p>' + response[i].a + '</p><div class="tags"><a href="#"><i class="icon"></i> Intel</a><a href="#"><i class="icon"></i> Architecture</a></div><a href="#" class="btn"><i class="icon"></i> Upload </a><a href="#" class="btn"><i class="icon"></i> Download </a></div></div>'
我在innerHTML中附加代码的行中存在一些问题。不明白那是什么。请帮忙!!!
答案 0 :(得分:0)
我通过在我的django模板外添加一个div来解决这个问题。
<div class="itemContainer">
#previous HTML code
</div>
现在我写的ajax成功函数
for(var i = 0; i < response.length; i++){
var divs = $('.itemContainer')[0].innerHTML;
$('.itemContainer')[0].innerHTML = divs.concat('//structure to concatenate');
}
我对methodolody不满意但仍然适合我。任何更好的答案/修复将不胜感激。
答案 1 :(得分:0)
你将ajax响应插入到最后一个div中。这就是为什么你的结构被冲洗了。由于您使用的是jQuery,因此请利用“.insertAfter”方法。例如:
var div = jQuery('<div/>', {
html: '<innerhtmlhere>'
});
div.insertAfter($('.item').last());
试一试,让我知道你的结果。
或者更快的实施:(如果您的回复文本是干净的)
$("<responsetexthere>").insertAfter($('.item').last());