通话功能不是功能

时间:2016-01-18 01:11:11

标签: javascript jquery

$(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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

JavaScript only hoists declarations, not initializations.

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

$(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() { ...来解决此问题将无效,除非您按照迈克的建议重新排序代码