jQuery中的替代getElementById()

Alternative getElementById() in jQuery

本文关键字:getElementById jQuery      更新时间:2023-09-26

我正在使用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。这些区块显示相同的横幅。代码over仅适用于一个ID。在本例中为#block1。document.getElementById不适用于我从其他主题中阅读到的更多ID。

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

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

它不起作用。firebug/控制台显示:ReferenceError:doexpand未定义。

我也尝试过用jQuery这样的单个块:

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

并且显示了相同的错误。

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

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

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

(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);