我没有从jshint或控制台收到此代码的错误。但是,我的ajax内容没有发布到预期的div。但是,警报会触发:
var recentVar;
var highlightsVar;
var test3;
var test4;
function switcher(divToShow, thisVar, otherVar, url, div){
$("#site-nav li a").parents().removeClass("nav-active");
$(div).addClass("nav-active");
if (otherVar){ $(otherVar).detach();}
if(typeof thisVar === 'undefined') {
thisVar = $(divToShow + " ul.top-level").load("assets/includes/" + url, function () {
alert("I'm new");
});
} else {
$(thisVar).appendTo("#content-listing");
alert("I'm old");
}
}
//Recent
$("#site-nav .nav1").on("click", function (event) {
switcher("#recent", "recentVar", "highlightsVar", "recent.php", "#site-nav .nav1");
event.preventDefault();
});
//Highlights
$("#site-nav .nav2").on("click", function (event) {
switcher("#highlights", "highlightsVar", "recentVar", "all-web.php", "#site-nav .nav2");
event.preventDefault();
});
最佳答案
它与AJAX无关,但我认为您的问题就在这里。
$(thisVar)
thisVar
只是文本。如果进行检查,您会看到$(thisVar).length
为0。这是因为您正在调用:$("recentVar")
,它将搜索<recentVar></recentVar>
类型的任何元素,但显然没有。如果您打算添加该文本,则可以使用append
或创建一个元素,然后将文本设置为recentVar
并附加它。编辑:另一个问题:
$(divToShow + "ul.top-level")
您需要在此处放置一个空格:
$(divToShow + " ul.top-level")
否则,您将尝试匹配废话的
#recentul.top-level
。