Javascript 如何在短时间延迟后触发单击
我正在构建一个主干应用程序,我的观点是这样的Javascript 如何在短时间延迟后触发单击,javascript,jquery,events,backbone.js,pug,Javascript,Jquery,Events,Backbone.js,Pug,我正在构建一个主干应用程序,我的观点是这样的 define(function (require) { 'use strict'; var MyBackbone = require('mybackbone'), template = require('utils/template'), Handlebars = require('handlebars'), Contest = r
define(function (require) {
'use strict';
var MyBackbone = require('mybackbone'),
template = require('utils/template'),
Handlebars = require('handlebars'),
Contest = require('controllers/ads/contest');
var Main = MyBackbone.View.extend({
initialize : function( options ) {
MyBackbone.View.prototype.initialize.apply(this, [options]);
this.template = Handlebars.compile( template.get( "presentation/page/main" ) );
this.loadChildViews( "footer", new Contest() );
},
render: function(){
var renderedContent = this.template();
this.$el.html( renderedContent );
return this;
},
events: {
"click .show-message": "hideAndShowMessage"
},
hideAndShowMessage: function(e){
var self = this;
e.preventDefault();
this.$el.find('.is-hidding:visible').addClass('hideFade');
this.$el.find('.bg-lets-go').removeClass('hideFade');
var targetLink = $(e.currentTarget);
targetLink.removeClass('show-message');
setTimeout(function(){
$('a.no-style:not(".show-message")', self.$el).trigger("click");
//$('a.no-style:not(".show-message")').click();
//targetLink.trigger('click');
}, 750);
}
});
return Main;
});
还有我的主要朋友杰德
div.main-container
.container-fluid.is-hidding
.row
.col-xs-6
a.no-style.btn-ipurpose.show-message(href="/#ipurpose")
i.fa.fa-tree.fa-3x
| JE PROPOSE
.col-xs-6
a.no-style.btn-ichoose.show-message(href="/#ichoose")
i.fa.fa-flag-checkered.fa-3x
| JE CHOISIS
.bg.bg-lets-go.is-hidding.hideFade
.bg.bg-simple
目标是在点击链接后显示750ms的“让我们走”消息
我尝试了一些设置超时的东西,但都不起作用。
没有javascript错误,这样做正确吗?在我看来,您的逻辑犯了错误 您再次将单击事件发送到之前单击的同一个锚点。侦听器仍将绑定到此元素,从而导致再次调用hideAndShowMessage。在该方法中,您再次调用e.preventDefault。你开始超时,然后点击发送,我们重新开始;基本上是一个无限循环 解决问题的一个快速方法是将preventDefault调用设置为有条件的:
var targetLink = $(e.currentTarget);
if(targetLink.hasClass(".show-message")) {
e.preventDefault();
//....rest of your logic
}
这应该能奏效 要显示一个元素,然后在750ms后隐藏它,可以执行类似以下操作:$'.bg lets go'.showslow.delay750.hideslow;。很抱歉,我不能给出完整的答案,因为我不熟悉Jade和Backbone.js。你怎么知道单击没有任何作用?那些碎片有什么关系?基本结构似乎工作得很好:,你有什么不同吗?为什么不使用toastr呢?它还有一个内置的超时。@DaveSalomon,我在不透明度上使用css3转换,这不是我想要的行为for@ZeeTee我不需要额外的库来完成这项工作:/不幸的是,它没有,有关详细信息,请参阅和。我实际上是在尝试v7和v6的工作,但不是我需要做的