我有一个简单的测试页面我用来测试用MVC3中的垂直选项卡界面和jquery显示部分视图......一切正常,但我有一个小问题。
一切正常,但我想添加一个“加载”消息,并在部分完全加载后将
这是我的js代码:
$('#left-nav li').live('click', function (event) {
var navlink = $(this).children("a").attr("href");
$('#left-nav li').removeClass('active');
$.ajax({
url: navlink,
success: function (data) {
//data contains the result returned by server you can put it in div here
$('.content-panel').html(data);
}
});
$(this).addClass('active');
//here you have to return false to prevent anchor from taking you to other page
return false;
});
有没有办法在更改课程之前智能地确定部分是否已满载?
答案 0 :(得分:3)
我想你要移动你的
$(this).addClass('active');
在success
ajax回调中。但是,$(this)将是success
内的不同上下文,因此您必须在$(this)
调用之前将ajax
上下文存储到变量中,并引用存储的上下文变量来自success
。
答案 1 :(得分:2)
只需将您的逻辑转移到成功回调中:
$('#left-nav li').live('click', function (event) {
event.preventDefault();
var li = $(this);
var navlink = li.children("a").attr("href");
$('#left-nav li').removeClass('active');
$.ajax({
url: navlink,
success: function (data) {
//data contains the result returned by server you can put it in div here
$('.content-panel').html(data);
li.addClass('active');
}
});
});
我还建议切换到.on()
而不是.live()
。这需要jQuery 1.7 +:
$('#left-nav').on('click', 'li', function (event) {
e.preventDefault();
var li = $(this);
var navlink = li.children("a").attr("href");
$('#left-nav li').removeClass('active');
$.ajax({
url: navlink,
success: function (data) {
//data contains the result returned by server you can put it in div here
$('.content-panel').html(data);
li.addClass('active');
}
});
});
答案 2 :(得分:2)
也许我错过了你的问题,但我相信你只需要在你的ajax调用的成功回调中添加active
类。
$('#left-nav li').live('click', function (event) {
event.preventDefault();
var navlink = $(this).children("a").attr("href");
$('#left-nav li').removeClass('active');
var self = $(this);
$.ajax({
url: navlink,
success: function (data) {
//data contains the result returned by server you can put it in div here
$('.content-panel').html(data);
self.addClass('active');
}
});
});