我有一个简单的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
我几乎可以肯定我错过了一些非常简单的东西,但我似乎无法看到它。
答案 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");
}
}
答案 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)