0

我正在使用 Drupal,并且创建了三个浮动横幅。

在首页有一个块(block1),显示一个浮动横幅,刷新后第二个出现,第三个也出现。就像之前写的这些横幅有一个小 X 按钮来停止溢出。我已将此脚本放在其中一个横幅中,并且效果很好。

<script language="javascript">
function doexpand() {
    document.getElementById("block1").style.overflow = "visible";
}

function dolittle() {
    document.getElementById("block1").style.overflow = "hidden";
}    
</script>

真正的问题是在类别页面中我有#block2 和文章#block3。这些块显示相同的横幅。上面的代码仅适用于一个 ID。在这种情况下#block1。当我从其他主题中阅读时,document.getElementById 不适用于更多 ID。

我用 jQuery 尝试了两个块标识,如下所示:

(function ($) {

    function doexpand() {
     $("#block1,#block2").css("overflow","visible");
    }
    function dolittle() {
     $("#block1,#block2").css("overflow","hidden");
    }

    })(jQuery);

它不工作。firebug/console 显示:ReferenceError: doexpand 未定义。

我也尝试过使用 jQuery 的单个块,如下所示:

(function ($) {

        function doexpand() {
         $("#block1").css("overflow","visible");
        }
        function dolittle() {
         $("#block1").css("overflow","hidden");
        }

        })(jQuery);

它显示相同的错误。

注意:Drupal 有不同的包装,它是这样的:

(function ($) {
        //your existing code
    })(jQuery);
4

1 回答 1

3

只需将您的函数定义为全局,或者您需要将它们全局公开。

(function ($, window) {

        function doexpand() {
         $("#block1").css("overflow","visible");
        }
        function dolittle() {
         $("#block1").css("overflow","hidden");
        }

        // expose them global
        window.doexpand = doexpand;
        window.dolittle = dolittle;

})(jQuery, window);
于 2013-06-26T07:34:16.877 回答