我有一个加载文件的个人函数,我想在加载页面后改变一个类。
功能是
var _loadFile = function(filename, container, errorMessage) {
$.ajax({
url : filename,
type: "GET",
cache: false,
dataType: "html",
success : function (data) {
$(container).html(data);
}
});
}
当我想使用它时,我做
_loadFile('assets/data/html/file.html', '#containerID', 'errorMessage');
$(idActive).addClass('active');
文件已加载但类未更改。因为我想要一个泛型函数,我不能在success()中改变类。
Thanx求助
答案 0 :(得分:2)
您正在尝试修改尚未加载的元素的DOM(addClass)。请尝试这种方法:
var _loadFile = function(filename, container, errorMessage) {
return $.ajax({
url : filename,
type: "GET",
cache: false,
dataType: "html",
success : function (data) {
$(container).html(data);
}
});
}
_loadFile('assets/data/html/file.html', '#containerID', 'errorMessage')
.then(function() {
$(idActive).addClass('active');
});
$.ajax
返回promise对象,并使用then
方法。你也可以在成功回调中移动$(idActive).addClass('active');
,但这并不好:我认为_loadFile
是一个通用函数,我们不希望它除了加载数据之外还知道其他任何东西。
答案 1 :(得分:0)
如果通过AJAX加载元素“idActive”,则必须在success callback
上添加该类:
var _loadFile = function(filename, container, errorMessage) {
$.ajax({
url : filename,
type: "GET",
cache: false,
dataType: "html",
success : function (data) {
$(container).html(data);
$(idActive).addClass('active');
}
});
}
假设已定义并生成idActive
。否则添加
console.log($(idActive));
并查看控制台输出以确定,您要添加该类的元素确实存在。