我可以做一个 link 只在点击几次后才有效吗
Can I make a link that only works after several clicks
我正在尝试在我正在构建的网站上放置一个小复活节彩蛋,如果用户点击 link x 次它会触发弹出窗口,我猜这会是某种 JS 或 JQuery 但我不知道从哪里开始,或者是否可能。我想我真正想要的是 Android 'About Phone' 页面中内置的彩蛋之类的东西,它会在 5 秒内点击大约 7 次后打开一个新页面。有没有办法在浏览器中执行此操作?
可能是一个 OnClick 命令,它向计数器加 1 并在计数器达到指定数字时执行操作,但每 10 秒将计数器重置为 0? (我不想让它太容易找到!)
谢谢
如果点击事件不符合您的要求,请使用 setTimeout(您每次都清除)和 preventDefault。
(function (node) { // IIFE to keep our namespace clean :)
var timer,
count = 0;
function timeup() {
count = 0;
}
function handler(e) {
clearTimeout(timer);
timer = setTimeout(timeup, 5e3); // 5 seconds
++count;
if (count < 7) // number of clicks
e.preventDefault();
}
node.addEventLister('click', handler);
}(document.getElementById('myLink'))); // passing the <a> into the IIFE
此代码必须运行在目标元素存在
之后
用 jQuery 试试这个:
Html:
<a id='lnkEgg' data-clicks='0'>Click for surprise</a>
脚本:
$(function(){
$("#lnkEgg").on("click",function(){
var c=$(this).data("click");
if(c==7){
//if it equals to whatever number you are chasing
//open the popup
}else{
$(this).data("clicks",c++);
}
});
});
@TheVillageIdiot 的技术是必经之路。在这里,我将仅展示一些使用相同技术的方法:
$(function(){
var egg = $('#lnkEgg');
egg.on('click', function() {
//increment and check if magic clicks has been reached
if( ++$(this).data().clicks == 7 ) {
console.log( "You've now clicked the required number of times");
//do some more operations
$(this).data('complete', true);
console.log( $(this).data() );
};
});
//Reset counter every 10 seconds
setInterval(function() {
egg.data().clicks = 0;
}, 10000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a id="lnkEgg" data-clicks="0">Click for surprise</a>
我正在尝试在我正在构建的网站上放置一个小复活节彩蛋,如果用户点击 link x 次它会触发弹出窗口,我猜这会是某种 JS 或 JQuery 但我不知道从哪里开始,或者是否可能。我想我真正想要的是 Android 'About Phone' 页面中内置的彩蛋之类的东西,它会在 5 秒内点击大约 7 次后打开一个新页面。有没有办法在浏览器中执行此操作?
可能是一个 OnClick 命令,它向计数器加 1 并在计数器达到指定数字时执行操作,但每 10 秒将计数器重置为 0? (我不想让它太容易找到!)
谢谢
如果点击事件不符合您的要求,请使用 setTimeout(您每次都清除)和 preventDefault。
(function (node) { // IIFE to keep our namespace clean :)
var timer,
count = 0;
function timeup() {
count = 0;
}
function handler(e) {
clearTimeout(timer);
timer = setTimeout(timeup, 5e3); // 5 seconds
++count;
if (count < 7) // number of clicks
e.preventDefault();
}
node.addEventLister('click', handler);
}(document.getElementById('myLink'))); // passing the <a> into the IIFE
此代码必须运行在目标元素存在
之后用 jQuery 试试这个:
Html:
<a id='lnkEgg' data-clicks='0'>Click for surprise</a>
脚本:
$(function(){
$("#lnkEgg").on("click",function(){
var c=$(this).data("click");
if(c==7){
//if it equals to whatever number you are chasing
//open the popup
}else{
$(this).data("clicks",c++);
}
});
});
@TheVillageIdiot 的技术是必经之路。在这里,我将仅展示一些使用相同技术的方法:
$(function(){
var egg = $('#lnkEgg');
egg.on('click', function() {
//increment and check if magic clicks has been reached
if( ++$(this).data().clicks == 7 ) {
console.log( "You've now clicked the required number of times");
//do some more operations
$(this).data('complete', true);
console.log( $(this).data() );
};
});
//Reset counter every 10 seconds
setInterval(function() {
egg.data().clicks = 0;
}, 10000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a id="lnkEgg" data-clicks="0">Click for surprise</a>