Jquery 对于硬编码的参数,函数的作用不同

Jquery 对于硬编码的参数,函数的作用不同,jquery,function,Jquery,Function,很抱歉,我不知道这个问题的术语。 基本上,此硬编码版本按预期工作: $("#navbar").on("click", "#contactLink", loadContact); function loadContact () { $("#navbar ul li a").removeClass("selected"); $("#contactLink").addClass("selected"); $("#page").fadeOut(500, function(){

很抱歉,我不知道这个问题的术语。 基本上,此硬编码版本按预期工作:

$("#navbar").on("click", "#contactLink", loadContact);

function loadContact () {
    $("#navbar ul li a").removeClass("selected");
    $("#contactLink").addClass("selected");
    $("#page").fadeOut(500, function(){
        $("#content").load("TGCContact.html .insert", function() {
            $("#page").fadeIn(1000);
        });
    });
    return false;
}
但以下版本暂停500毫秒(包括“选定”链接更新),然后清空内容并直接跳到fadeIn()

硬编码的版本是好的和顺利的。有人能解释一下为什么会发生这种情况以及如何解决它吗?
谢谢

我在第二个版本中看到的唯一错误是,您失去了
return false
的预期效果,这是为了防止默认行为(
event.preventDefault()
通常更适合)

因此,如果没有HTML,我们可以假设那里有一个URL,页面会做一些可能导致不必要影响的事情

因此,您可以返回被调用函数的结果

$("#navbar").on("click", "#contactLink", function(){
    return loadContact('TGCContact.html .insert', '#contactLink');
});
或者干脆在函数中丢失
并返回false
,然后在处理程序中执行

$("#navbar").on("click", "#contactLink", function(){
    loadContact('TGCContact.html .insert', '#contactLink');
    return false;
});
event.preventDefault
way

$("#navbar").on("click", "#contactLink", function(event){
    loadContact('TGCContact.html .insert', '#contactLink');
    event.preventDefault();
});

你能为此设置一个提琴吗?以500为参数的淡出调用可能与此有关…经过进一步研究,似乎是传递函数调用而不是函数引用的问题。是否在第二个示例中调用了loadContact函数?传递函数(){loadContact(…);}似乎是一个有效的引用。谢谢!第二个例子在loadContact()函数之外使用了“return false”实现了这一点。我还需要stopPropagation,因为我在导航栏上有侦听器,所以在这种情况下,可以使用return false。
$("#navbar").on("click", "#contactLink", function(event){
    loadContact('TGCContact.html .insert', '#contactLink');
    event.preventDefault();
});