香草JS:延迟点击事件以添加动画
Vanilla JS: delay click event to add animation
请不要jQuery!
我不想为此使用 jQuery,因为它是一个大库,我只需要做这一件事:
我想为点击事件添加短暂的延迟,以便我可以使用 CSS 淡出页面中的元素。
我可以发布到目前为止我尝试过的所有代码,但你会感到无聊。所以这是我认为最接近的:
document.getElementsByTagName('a').onclick = function (e) {
// Delay setting the location for one second
setTimeout(function() {this.href}, 90000);
var animOut = document.getElementByClassName('animateOut');
animOut.className += 'out';
};
我已经排除了使用 onbeforeunload
,所以劫持点击事件似乎是最好的方法。
再一次,我知道这将是jQuery中的一个难题,但如果可能的话,我想避免它。
非常感谢您的回答。
本
更新
感谢评论者guest271314和The Alpha,我已经确定了这种方法,但仍然没有完成这个难题。
window.onload = function(){
var links = document.getElementsByTagName('a');
for( var i=0,il = links.length; i< il; i ++ ){
links[i].onclick = clickHandler;
}
function clickHandler(event) {
event.preventDefault();
// Delay setting the location for one second
setTimeout(function() {
location.href = this.href;
}, 90000);
// add `s` to `Element`
var animOut = document.getElementsByClassName("animateOut");
// iterate `animOut` elements
for (var i = 0; i < animOut.length; i++) {
// add `out` `className` to `animOut` element at index `i`
animOut[i].classList.add("out");
};
};
};
不得不迭代a
标签是我从阅读其他帖子中学到的补充(我将在一分钟内链接到它们)。
不幸的是,setTimeout
功能似乎不起作用。我需要优化此函数中的内容,但不知道以何种方式。
非常欢迎进一步的援助。
谢谢
本
我真的不能为此感到高兴,下面的 2 个用户(guest271314 和 The Alpha)应该得到很多认可,因为他们帮助我实现了什么。经过一些改进的完整代码是:
window.onload = function(){
var links = document.getElementsByTagName('a');
for( var i=0,il = links.length; i< il; i ++ ){
links[i].onclick = clickHandler;
}
function clickHandler(event) {
event.preventDefault();
var travelTo = this.getAttribute("href");
// add `s` to `Element`
var animOut = document.getElementsByClassName("animateOut");
// iterate `animOut` elements
for (var i = 0; i < animOut.length; i++) {
// add `out` `className` to `animOut` element at index `i`
animOut[i].classList.add("out");
};
// Delay page out until the animation finishes
setTimeout(function() {
window.location.href = travelTo;
}, 1000);
};
};
你可以尝试这样的事情:
document.getElementsByTagName('a').onclick = function (event) {
event.preventDefault();
document.getElementByClassName('animateOut').className += ' out';
setTimeout(function() {
location.href = this.href;
}, 1000);
};
应该有一个
"s"
在document.getElementsByClassName
。要向所有元素添加className
animateOut
可以使用for
循环;如果预期结果是导航到单击的a
元素的href
,请将this.href
更改为window.location.href = e.target.href
;否则离开,因为this.href
要求是刷新当前window.location.href
:this.href
在setTimeout
document.getElementsByTagName("a").onclick = function (e) {
// Delay setting the location for one second
setTimeout(function() {window.location.href = this.href}, 90000);
// add `s` to `Element`
var animOut = document.getElementsByClassName("animateOut");
// iterate `animOut` elements
for (var i = 0; i < animOut.length; i++) {
// add `out` `className` to `animOut` element at index `i`
animOut[i].classList.add("out");
};
相关文章:
- 将单击事件添加到数据表
- 将单击事件添加到附加的项目中
- 使用引导事件添加动画
- 如何将单击事件添加到JQuery中动态添加的元素中
- 如何在jQuery中将事件添加到新生儿元素中
- JQuery将侦听事件添加到.rezable(),然后附加DIV's
- jQuery:使用实时事件添加tabindex属性
- 将单击事件添加到显示字段
- 如何将事件添加到jQuery's on()回调
- 将此事件添加到工具栏
- TinyMCE 将另一个事件添加到粗体和斜体按钮
- 当用户在输入字段事件中输入内容时,为该字段事件添加动画占位符
- 使用 JQuery 将 onclick 事件添加到动态创建的定位点
- Raphaeljs 将点击事件添加到饼图的一部分
- 将事件添加到网格的coffeescript实现中
- 将事件添加到谷歌地图标记
- Javascript:将onkeydown事件添加到prompt()中
- 如何将onclick事件添加到joint.js元素中
- 角度指令:绑定'鼠标悬停'事件添加到元素
- 将事件添加到涉及for()的索引中的多个子节点