调用函数不是一个函数。

3
$(function() {
    var previous_page = "<?=$_SESSION["previous_page"]?>";
    if (previous_page == "bar_settings")
        $.club_settings();

    $.club_settings = function() {
        $(".bar_settings").fadeIn(1000);
        $(".bar_photos").hide();
        $(".bar_activities").hide();
        $(".bar_campaigns").hide();
        $(".etkinlik_ekle").hide();
        $(".kampanya_ekle").hide();
    }

})(jQuery);

我收到了一个错误,说$.club_settings不是一个函数。我该如何在if条件中调用$.club_settings

1
因为在尝试调用之前你没有定义它。你正在创建一个匿名函数,而不是一个被提升的命名函数。 - Patrick Evans
2个回答

3

你在调用函数后再定义它。请将代码改为如下:

$(function() {
    $.club_settings = function() {
        $(".bar_settings").fadeIn(1000);
        $(".bar_photos").hide();
        $(".bar_activities").hide();
        $(".bar_campaigns").hide();
        $(".etkinlik_ekle").hide();
        $(".kampanya_ekle").hide();
    }

    var previous_page = "<?=$_SESSION["previous_page"]?>";
    if (previous_page == "bar_settings")
        $.club_settings();


})(jQuery);

哎呀,我怎么会错过它呢 :D 非常感谢,我为此浪费了太多时间 :( - Levent Tulun

0

JavaScript只提升声明,而不是初始化。

上面的参考显示了变量如何被提升,但它也适用于函数。

$(function() {
   var previous_page = "<?=$_SESSION["previous_page"]?>";
   if (previous_page == "bar_settings")
     club_settings();

   function club_settings() {
     $(".bar_settings").fadeIn(1000);
     $(".bar_photos").hide();
     $(".bar_activities").hide();
     $(".bar_campaigns").hide();
     $(".etkinlik_ekle").hide();
     $(".kampanya_ekle").hide();
   }
})(jQuery);

缺点是它会在你的$变量中被发现,这可能会导致其他地方的代码出现错误。但这可能是另一个问题。

试图通过执行$.club_settings() = function club_settings() { ...来解决这个问题是行不通的,除非按照Mike建议的重新排列代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接