onclick事件不调用Javascript函数

时间:2014-10-15 23:10:55

标签: javascript jquery razor

所以,我有这个链接:

<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事件中取消函数调用,则警报会显示消息,但如果函数在那里,则它不会到达它。我试过调试它但它从未到达控制器。这段代码有什么问题?


为了清楚起见,我尝试使用全局函数和适当的事件处理程序,但它没有用。

1 个答案:

答案 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();
        });
    });
});