点击网页上的任何元素(比如链接,按钮等),我需要停止操作。但是,如果用户再次单击它们(在第二次单击时),则应该执行操作,并且应该重定向到下一页。 我有这个代码来停止行动:
event.preventDefault();
event.stopPropagation();
我需要写条件来检查鼠标点击。请帮忙。
更新1:
var count=0;
var elements = document.querySelectorAll("*");
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener("click", nonJQuery, false);
var nonJQuery = function (event) {
//some code
count++;
if(count<2){
event.preventDefault();
event.stopPropagation();
}
//some code
}
感谢您的帮助。我写这样的东西。我需要停止在网页上的所有元素上执行而不是在特定元素上执行。所以,我的代码看起来像这样。 如果count是全局声明的,并且它在函数中递增,则单击的下一个元素将具有错误的值。有人可以纠正我吗? P.S:同样如果我也使用布尔值。
答案 0 :(得分:3)
对每个元素使用counter
。您可以使用data
属性在元素本身上存储计数器。
$('mySelector').on('click', function(e) {
// Get counter of this element
var counter = parseInt($(this).data('clickCount'), 10) || 0;
if (counter++ % 2 === 0) {
//
} else {
e.preventDefault();
e.stopPropagation();
}
$(this).data('clickCount', counter);
});
修改强>
没有jQuery
:
element.addEventListener('click', function (e) {
// Get counter of this element
var counter = parseInt((this.dataset.counter), 10) || 0;
if (counter++ % 2 === 0) {
//
} else {
return false;
}
this.dataset.counter = counter;
});
答案 1 :(得分:1)
你可以保留一个计数器并在每次点击时增加它。根据您的要求,计数器可以是特定于项目的或全局的。然后你可以检查计数器值并具有条件逻辑。
答案 2 :(得分:0)
你可以这样做:
var inc = 0;
element.addEventListener('click',function(event){
inc++;
if(inc < 2){
event.preventDefault();
}
});
答案 3 :(得分:0)
使用布尔变量。做:
var check= true;
element.addEventListener('click',function(event){
if(check){
check= false;
event.preventDefault();
event.stopPropagation();
}else{// do your task
}
});
答案 4 :(得分:0)
http://jsfiddle.net/turutosiya/kLausy7x/1/
<ul>
<li><a href="https://stackoverflow.com/" target="_blank">Click Here 1</a></li>
<li><a href="https://stackoverflow.com/" target="_blank">Click Here 2</a></li>
<li><a href="https://stackoverflow.com/" target="_blank">Click Here 3</a></li>
<li><a href="https://stackoverflow.com/" target="_blank">Click Here 4</a></li>
</ul>
(function(){
$(function(){
$('a').on('click', function(event){
if(!$(this).data('clicked')) {
$(this).data('clicked', true);
return false;
} else {
return true;
}
});
});
})();