javascript - JQuery toggleClass() 打开然后关闭(或删除)

标签 javascript jquery html css angularjs

我正在使用 Angular Directive(指令)来获得页面的左栏和右栏。 <left-column></left-column><right-column></right-column> 。当用户单击<a href="#target1">Target 1</a>时然后它找到对应的<div id="target1">Target 1</div>右列

效果很好,我现在要做的是在单击特定 div 的背景后应该会闪烁或其他东西,我有一些 css。所以我想切换该 css 类,然后稍后删除该类(或将其关闭)。

我正在尝试使用 setTimeout()功能,但似乎不起作用。有任何想法吗?

我的错误是:

Uncaught TypeError: Cannot read property 'toggleClass' of undefined 

我的js是:

var highlight = {

    onReady: function() {

        $(document).on('click', 'left-column > div', function(event) {

            var id = $('a', this).attr('href').split('#');
            var target = $('right-column > div').find('#' + id[1]);

            target.toggleClass('gas');
            var junk = setTimeout(function(target) {
                target.toggleClass('gas');
            }, 1000);

            event.preventDefault();

        });

    }

};


$(document).ready(highlight.onReady);

最佳答案

您的问题是您期望 target 作为传递给 setTimeout 的回调中的参数,但实际上并未传递任何参数,因此 target setTimeout 回调本地的 隐藏(隐藏)对外部作用域中可用的target 的访问。

从回调参数中删除 target 将修复您的错误:

var junk = setTimeout(function(/* remove target from here */) {
  target.toggleClass('gas');
}, 1000);

或者,如果您愿意,您可以显式传递它,但由于它已经可用,所以它是多余的:

var junk = setTimeout(function(target) {
  target.toggleClass('gas');
}, 1000, target); // <--- you can pass the target along here

关于javascript - JQuery toggleClass() 打开然后关闭(或删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967183/

相关文章:

php - 如何在PHPExcel报表中连接数组中的数据

html - 在不知道宽度的情况下对齐 DIV 标签

javascript - 函数内部的函数参数

javascript - 在实例内部创建一个新数组。 Javascript

javascript - jquery将html内容(日期戳)加载到div中不去我想要的地方

javascript - jQuery 可以多次使用 .fadeTo() 吗?

javascript - ICanHaz 未检测到模板

javascript - 如何解决这个 Angular $scope 问题?

JQuery:如何提交具有名称为 "submit"的提交按钮的表单

javascript - 为什么这个函数会触发多次?