【问题标题】:jquery click-function is executed when page loads but not when clickedjquery click-function 在页面加载时执行,但在单击时不执行
【发布时间】:2020-07-09 18:57:48
【问题描述】:

我使用jQuery获取页面加载时div的高度#img-copyright,写入var copyrightHeight并将div的高度设置为0。

当点击不同的 div 时,function showImgCopyright() 应该将 div #img-copyright 的最大高度设置为 var 的内容。

我试了两次。

第一个:

var copyrightHeight;

$(document).ready(function () {

    copyrightHeight = $("#img-copyright").height();

    console.log(copyrightHeight);
    // just used to see if the height got written in the var - it is

    $("img-copyright").css("max-height", 0);

    $("#show-img-copyright").click(showImgCopyright());

    function showImgCopyright() {
        $("#img-copyright").css("max-height", copyrightHeight);
    }


});

第二个:

var copyrightHeight;

$(document).ready(function () {

    copyrightHeight = $("#img-copyright").height();

    console.log(copyrightHeight);
    // just used to see if the height got written in the var - it is

    $("img-copyright").css("max-height", 0);

    $("#show-img-copyright").click(function (){
        $("#img-copyright").css("max-height", copyrightHeight);
    });


});

在第一个示例中,该函数在页面加载后直接执行,而不是在单击 div 时执行(不是我想要的方式)。 在第二个示例中,它按我的意愿工作——该函数只是在单击 div 时执行。 但我不明白为什么。

如何使它与第一个示例中的额外功能一起使用?

【问题讨论】:

  • 将命名函数传递给事件处理程序时,您希望省略括号,因此click(showImgCopyright()); 应该是click(showImgCopyright);。通过附加括号,您实际上只是在运行函数。

标签: javascript jquery


【解决方案1】:

非常感谢。

我也发现了,我在 $("img-copyright").css("max-height", 0); 行中忘记了#。

所以正确的代码应该是:

var copyrightHeight;

$(document).ready(function () {

    copyrightHeight = $("#img-copyright").height();

    $("#img-copyright").css("max-height", 0);

    $("#show-img-copyright").click(showImgCopyright);

    function showImgCopyright() {
        $("#img-copyright").css("max-height", copyrightHeight);
    }

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    相关资源
    最近更新 更多