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

时间:2016-01-19 13:51:23

标签: javascript jquery

我有一个简单的If语句,用于检查是否在click事件中调用了复选框,但是click事件似乎无效。

我有两个虚拟警报进入if只是为了看它是否被击中但是它们都不是。

HTML:

var firstRule = params.validatedProperty.rules()[0];

JS:

 <input id="cookie-checkbox" name="cookie-checkbox" class="cookie-checkbox" type="checkbox" checked><label for="cookie-checkbox">I give consent for the use of cookies on this website.</label><br /><br />
 <button id="cookiesbutton" type="button" class="btn btn-default">Send</button>

我有一个小提琴设置代码:JSFiddle

我几乎可以肯定我错过了一些非常简单的东西,但我似乎无法看到它。

4 个答案:

答案 0 :(得分:7)

您需要将点击处理程序引用提供给cookiesDismiss()函数,而不是函数的结果

另请注意,您需要在文档就绪处理程序之前加上$,而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");
    }
}

Updated fiddle

答案 1 :(得分:0)

每当你添加括号&#34; ()&#34;对于一个函数,它只在那时执行/计算,在你的情况下它分配了函数的评估值而不是实际函数。

<强> Eample:

&#34; 目标&#34;是html控件的ID。

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

 $( "#target" ).click(showAlert);

 function showAlert(){  
    alert( "Handler for .click() called." ); 
 }
  

在您的情况下:

因为游戏名称是&#34; cookiesDismiss &#34;它应该如下面提到的代码:

$(&#39;#cookiesbutton&#39;)。click(cookiesDismiss())

(function () {
       $('#cookiesbutton').click(cookiesDismiss);            
});

希望这会对你有所帮助:)。

答案 2 :(得分:0)

好的,你显然需要首先直接获得你的JavaScript基础知识:)但是,这是你的错误:

在第一段代码中,您似乎写了一个立即 nvoked F unction E xpression(IIFE)。在JavaScript中,以下是函数声明:

function myFunction() {
    // My awesome stuff
}

没有其他人调用此函数,它几乎没用。您可以将函数调用为myFunction(),或者在声明为:

时立即调用该函数
(function myFunction() {
    // My awesome stuff
})();

此模式主要用于防止函数体在全局范围内公开变量。

因此,在您的情况下,单击事件处理程序从未注册,因为从未调用该函数。

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

注册事件处理程序时,传递的参数是对函数的引用。

$('#myButton').click(myFunction);

因此,您说,每次点击myFunction时都会调用我的函数$('#myButton')。所以,你的错误就是你立即调用了函数cookiesDismiss(),因此注册为按钮点击的处理程序的是你的函数cookiesDismiss返回的任何内容(未定义),因此没有任何反应。

其他人已经在这里放置了正确的代码,但你绝对应该花时间学习基础知识。

答案 3 :(得分:0)

第1名:你错过了$符号
2nd:$('#cookiesbutton')。click(cookiesDismiss());在开始时解雇事件。 第3名:.checked是错误的。你可以使用.is(“:checked”) 第四名:Rory McCrossan提供了解决方案。