如何使用javascript在第一次鼠标点击的网页上禁用操作?

时间:2015-06-22 05:39:41

标签: javascript html

点击网页上的任何元素(比如链接,按钮等),我需要停止操作。但是,如果用户再次单击它们(在第二次单击时),则应该执行操作,并且应该重定向到下一页。 我有这个代码来停止行动:

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:同样如果我也使用布尔值。

5 个答案:

答案 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

data docs

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;
            }
        });   
    });
})();