【问题标题】:jQuery - Unspecified token . - what's unspecified?jQuery - 未指定的令牌。 - 什么是未指定的?
【发布时间】: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


【解决方案1】:

您的文档中存在一些语法错误和其他对语法的误解 代码。

所做的更改是

  1. var hasClick = false; 移到document ready 之外。
  2. $('a').on('click',function(e){ 而不是 if('a').click(function(e))
  3. 在处理程序中使用$(this) 而不是$('a')
  4. 里面的变量值更改为hasClick = false;,因为它是一个全局变量,如果你在函数内部使用var hasClick,它只是一个局部变量。

var hasClick = false;
$(document).ready(function() {
  $('a').on('click', function(e) {
    if ($(this).hasClass('stopper')) {
      e.preventDefault();
      hasClick = false;
    } else {
      if (hasClick == false) {
        e.preventDefault();
        hasClick = true;
      }
    }
  });
});

【讨论】:

  • 我试过这个方法,它可以防止所有链接被点击。无论您点击多少次都不会激活链接。
  • @ow_dj 所以你希望所有链接一开始都被禁用,然后在我们第二次点击时启用它们?
  • 是的,如果可能的话。我已经用我当前的代码更新了这个问题(ish),但似乎不适用于整个菜单。我会在上面解释。
【解决方案2】:

我相信你的功能应该是:

$(document).ready(function () {
    var hasClick = false;
    $('a').on('click', function(e) {
        if( $(this).hasClass('stopper') ) {
            e.preventDefault();
            var hasClick = false;
        } 
        else {
            if(hasClick == false) {
                e.preventDefault();
                var hasClick = true;
            }
        }
    });
});

【讨论】:

    猜你喜欢
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多