我有一个无序列表(每个列表元素包含一些进一步的标记,但这无关紧要)是从AJAX调用到DB的构造(实例化和附加)。我想在发出以下任何AJAX调用结果之前清除列表。
$('#list').empty()
由于某种原因不起作用(我已尝试过.remove()和.not()的许多替代模式,但没有成功)。我知道我正确定位物品,因为我可以改变css等。 我能做的最好的就是从每个li中删除一个元素:
$('list li .class').remove()
我在这里做了一些根本错误的事情吗?
顺便说一下列表元素是使用Mustache呈现的,但是这一点无关紧要,因为它只是HTML标记,或者我在这里也错了吗?
感谢您的帮助。
[编辑] 好吧,所以没有运气在jsfiddle上获得任何体面的AJAX响应,所以这里是AJAX函数调用的本质:
function loadResults() {
$.ajax({
'type' : 'POST',
'url' : '/lib/ajax.php',
'data' : {
'data1' : $('#data1').text(),
'data2' : $('#data2').text(),
'data3' : $('#data3').text()
},
'success' : function(data) {
data = JSON.parse(data);
// remove old results and add new results iteratively
$('#results ul').empty();
$.each(data, function(i, elem) {
// Load the template
$.get('/views/default/templates/elem_tpl.html', function(t) {
tmpl = t;
});
$(document).ajaxStop(function() {
var template = Mustache.render(tmpl, elem);
$('#results ul').append(template);
});
});
}
});
}
HTML实际上只是用于测试目的的基本列表:
<div id="results">
<ul>
</ul>
</div>
如果这有帮助。
答案 0 :(得分:0)
不完全是答案,但对于在使用Mustache进行某些动态模板时遇到类似问题的人,我的解决方案是切换到客户端模板的underscore.js。
如果您只是在调用模板之前添加以下内容,则无需修改任何模板(我的模板位于外部文件中以节省时间):
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};
第一次完美地工作。我不知道Mustache正在做什么来混淆jQuery,当我有更多的时间在我手上时,我会尝试研究这个。