我正在尝试使用锚点的title元素来确定目标通过ajax加载到哪个块元素,目前它看起来像这样:
$(document).ready(function() {
$('#content').load('overview.php'); //by default initally load text from overview.php
$('body').delegate('a.ajax', 'click', function(e) { //start function when any link is clicked
e.preventDefault();
var content_show = $(this).attr("href"); //retrieve href of link so we can load the correct file
$.ajax( {
method: "get", url: content_show,data: 0,
beforeSend: function(){$("#loading").show("fast");}, //show loading just when link is clicked
complete: function(){ $("#loading").hide("fast");}, //stop showing loading when the process is complete
success: function(html) { //so, if data is retrieved, store it in html
$($(this).attr("title")).show("slow"); //animation
$($(this).attr("title")).html(html); //show the html inside the target div
}
}); //close $.ajax(
}); //close delegate(
}); //close $(
这一点的全部意义上,我可以从一个页面点击链接,内容div中标题为#content load,子标题div中标题设置为#subcontent的链接。这是可能的,如果是的话,我做错了什么?
更新 好吧,显然$(this)变量在进入$ .ajax调用时有变化,所以将$(this).attr(“title”)放入变量然后调用变量代替选择器,按预期工作。
答案 0 :(得分:1)
逻辑看起来对我来说足够了。我们会想到两个可能的问题:ajax调用可能失败,或者标题标记可能没有返回您期望的字符串。出于这个原因,我建议在你的console.log
函数中添加一个ajax错误处理程序和一些额外的$.ajax
,以帮助你了解从firebug或web检查器发生的事情。
success: function(html) {
console.log("The title tag is: " + $(this).attr("title"));
$($(this).attr("title")).show("slow");
$($(this).attr("title")).html(html);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log("An ajax error occurred: "+errorThrown);
}