所以,我有这个链接:
<li><a id='HomeLink' href="#" style="font-size:large" onclick="loadPartialHome();alert('huzza!');">Receitas</a></li>
以及相应的功能:
$(document).ready(function () {
function loadPartialHome() {
$.get('@Url.Action("IndexPartial","Home")', function (data) {
$('#partialLoader').html(data);
$('#partialLoader').fadeIn();
});
}
});
为什么不起作用?如果我从onclick事件中取消函数调用,则警报会显示消息,但如果函数在那里,则它不会到达它。我试过调试它但它从未到达控制器。这段代码有什么问题?
为了清楚起见,我尝试使用全局函数和适当的事件处理程序,但它没有用。
答案 0 :(得分:0)
loadPartialHome()
定义为全局变量才能从HTML中访问。现在,它已在$(document).ready()
内定义,因此只能在该范围内使用。
你可以简单地将定义移到.ready()
处理程序之外,因为没有必要等待DOM准备好只是为了声明一个javascript函数:
function loadPartialHome() {
$.get('@Url.Action("IndexPartial","Home")', function (data) {
$('#partialLoader').html(data).fadeIn();
});
}
$(document).ready(function () {
// another other code here
});
当然,更好的做法是尝试"unobtrusive javascript"而不是在HTML中定义事件处理程序,而是在javascript中设置事件处理程序并从HTML中删除onlick="loadPartialHome"
像这样:
$(document).ready(function () {
$("#HomeLink").click(function(e) {
$.get('@Url.Action("IndexPartial","Home")', function (data) {
$('#partialLoader').html(data).fadeIn();
});
});
});