Javascript jQuery单击事件未在按钮元素上触发

Javascript jQuery单击事件未在按钮元素上触发,javascript,jquery,Javascript,Jquery,我有一个简单的If语句,它检查在click事件中调用的复选框是否为check,但是click事件似乎不起作用 我在if中输入了两个虚拟警报,只是想看看它是否被击中,但它们都没有 HTML: 我有一把小提琴,上面有代码: 我几乎可以肯定,我遗漏了一些非常非常小和简单的东西,但我似乎看不到它。您需要为单击处理程序提供对CookiesDismission函数的引用,而不是函数的结果 还要注意,您需要在文档就绪处理程序前面加上$,并且checked不是jQuery对象的属性;您需要使用prop'chec

我有一个简单的If语句,它检查在click事件中调用的复选框是否为check,但是click事件似乎不起作用

我在if中输入了两个虚拟警报,只是想看看它是否被击中,但它们都没有

HTML:

我有一把小提琴,上面有代码:


我几乎可以肯定,我遗漏了一些非常非常小和简单的东西,但我似乎看不到它。

您需要为单击处理程序提供对CookiesDismission函数的引用,而不是函数的结果

还要注意,您需要在文档就绪处理程序前面加上$,并且checked不是jQuery对象的属性;您需要使用prop'checked'来获取复选框的状态

$(function() {
    $('#cookiesbutton').click(cookiesDismiss); // note the removal of ()
});

function cookiesDismiss() {
    var cookieConsent = $('#cookie-checkbox');

    if (!cookieConsent.prop('checked')) {
        alert("Cookie removed");
    } else {
        alert("Modal hidden");
    }
}

每当您向函数添加圆括号时,它只会在此时执行/计算,在您的情况下,它会指定函数的计算值,而不是实际函数

示例:

其中target是html控件的ID

   $( "#target" ).click(function() {
      alert( "Handler for .click() called." );
    });

就你而言:

由于功能名称为Cookies,因此应为以下提到的代码:

$“cookiesbutton”。单击CookiesDisclose


希望这能对您有所帮助:

好的,您显然需要首先弄清JavaScript的基本原理:但是,这里是您的错误:

在第一段代码中,您似乎编写了一个立即调用的函数表达式IIFE。在JavaScript中,以下是函数声明:

function myFunction() {
    // My awesome stuff
}
如果没有其他人调用这个函数,它几乎是无用的。您可以将函数作为myFunction调用,也可以在函数声明为:

(function myFunction() {
    // My awesome stuff
})();
此模式主要用于防止函数体在全局范围上公开变量

因此,在您的例子中,从未注册click事件处理程序,因为从未调用该函数

现在,您知道函数调用是什么了。myFunction调用该函数。而myFunction获取对函数的引用

$('#myButton').click(myFunction);
注册事件处理程序时,传递的参数是对函数的引用

$('#myButton').click(myFunction);
所以,您可以说,每次单击$'myButton'时都调用我的函数myFunction。因此,您的错误是您立即调用了函数CookiesDisclease,因此注册为按钮单击处理程序的是函数CookiesDisclease返回的内容,它没有任何未定义的内容,因此不会发生任何事情

其他人在这里放置了正确的代码,但你肯定应该花时间学习基本原理。

1st:你错过了$符号 第二个:$“cookiesbutton”。单击CookiesDisclose;从一开始就启动事件。 第三,这是错误的。您可以使用。is:已选中
第四:Rory McCrossan提供了解决方案。

我相信您知道函数调用和引用之间的区别。把知识运用到这里。此外,仅在父函数中包装函数并不能使其生存,您还必须使用运算符。为什么不说这里还有什么问题,而不是在am offsite resource中修复它呢!最好使用snipplet。@epascarello在这个过程中。您的示例实际上缺少执行函数所需的括号。
function myFunction() {
    // My awesome stuff
}
(function myFunction() {
    // My awesome stuff
})();
$('#myButton').click(myFunction);