【发布时间】:2016-01-15 01:37:10
【问题描述】:
我目前正在尝试使 click if 语句起作用,该语句将检测是否单击了一个链接。如果之前没有点击过,则忽略点击,然后将变量设置为 true 表示之前已经点击过。
然而,然后我需要第二个与 .stopper 类的链接,以将变量基本上重置为 false,这样第一个按钮将需要再次单击两次。这是我的代码:
$(document).ready(function () {
var hasClick = false;
if('a').click(function(e)) {
if('a').hasClass('stopper') {
e.preventDefault();
var hasClick = false;
} else {
if(hasClick == false) {
e.preventDefault();
var hasClick = true;
}
}
}
});
我在这行 if('a').click(function(e)) {(第 5 行,实际代码的第三行)之后收到 Unspecified token . 错误。
这里有什么问题?我对这种错误提出的其他问题似乎与我所拥有的代码不符,就函数类型等而言。
这个半在未指定的令牌部分帮助了我,但在如何修复它方面仍然没有运气。 http://davidwalsh.name/fix-javascript-errors
所以这个工作的一个例子是:
hasClick 变量为假。
按钮 1:单击我一次并将变量 (hasClick) 设置为 true,但忽略该链接,因此第一次单击时不要去任何地方。一旦变量为真,然后转到链接。
按钮2:无论变量是否为真,确保为假并忽略点击。
- 编辑
例如,菜单如下所示:
Level 0 Link
Level 1 Link
Level 1 Link
Level 2 Link
Level 2 Link
Level 3 Link
Level 3 Link
Level 0 Link
Level 1 Link
Level 1 Link
Level 2 Link
Level 2 Link
Level 3 Link
Level 3 Link
$(document).ready(function () {
var hasClick = false;
$( '.level-0 a' ).on('click', function(e) {
if( $( this ).hasClass('.level-0 a')) {
e.preventDefault();
hasClick = false;
} else {
if(hasClick == false) {
e.preventDefault();
hasClick = true;
} else {
return true;
hasClick = true;
}
}
});
});
因此,当您单击第一个 0 级链接时,它会起作用!伟大的。但是,当您决定还想点击第二个 0 级链接时,它不会像第一个 0 级链接那样阻止该链接被激活并转到该页面。
【问题讨论】:
-
是缺失(如果之后
-
我建议您阅读 if 语句以及它们如何在 Javascript 中工作。您似乎也误解了如何在 jQuery 中绑定到单击事件。
-
另外,您似乎使用
var重新初始化了变量hasClick。当您说var hasClick = something时,您会覆盖以前的变量并以相同的名称创建一个新变量。我建议删除点击函数中的两个var关键字。 -
尝试更好地了解 javascript 中的语法和全局/局部变量。
-
我是 jQuery 的半新手,公平地说,这个用例不是一个常见的例子。我只是想看看我在哪里滑倒了。
标签: javascript jquery token