防止点击另一个按钮jquery

时间:2013-11-10 04:30:20

标签: javascript jquery

如果首先点击其他按钮,如何防止点击...

实施例 http://jsfiddle.net/C5AVH/3/

  $(function(){ 
     $('.vote_like').one('click',function(){
     $('.vote_dislike').removeClass('vote_dislike');
     alert('Done!')
   });

   $('.vote_dislike').one('click',function(){
    $('.vote_like').removeClass('vote_like');
    alert('Done!');
    });
   });

    <a href="#" class="vote_like">Like</a> - 
    <a href="#" class="vote_dislike">Dislike</a>

当您点击按钮时,我想禁用点击不喜欢按钮,反之......

我尝试删除课程,但似乎无法正常工作......

$('.vote_like').removeClass('vote_like');

5 个答案:

答案 0 :(得分:2)

您可以删除点击处理程序

$(function () {
    $('.vote_like').one('click.like', function () {
        $('.vote_dislike').off('click.like');
        console.log('like!')
    });
    $('.vote_dislike').one('click.like', function () {
        $('.vote_like').off('click.like');
        console.log('dislike!');
    });
});

演示:Fiddle

答案 1 :(得分:1)

因为您已将.one处理程序附加到每个按钮,所以根据jquery docs,它最多仍会执行一次。要防止单击,必须在单击一个后删除处理程序。

     $('.vote_like').one('click',function(){
     $('.vote_dislike').off();
     alert('Done!')
   });

   $('.vote_dislike').one('click',function(){
    $('.vote_like').off();
    alert('Done!');
    });
   });

    <a href="#" class="vote_like">Like</a> - 
    <a href="#" class="vote_dislike">Dislike</a>

但更好的是,为什么不将one处理程序附加到两个元素并检查哪个被单击:

  $(function(){ 
     $('.vote_like,.vote_dislike').one('click',function(){  
     if($(this).is('.vote_like')){
         //set data for like
     }
     else{
         //set data for dislike
     } 
     //make ajax call
   });

答案 2 :(得分:0)

锚点没有办法禁用它们,所以你需要删除锚点或在你的javascript中设置一个布尔值来跟踪它是否被点击。

或者,您可以将它们转换为实际的button元素,使用disabled状态。

或者您可以使用jquery将自定义data属性添加到锚点以跟踪它是否已“禁用”

答案 3 :(得分:0)

可以为两个按钮使用一个处理程序,并为其中的

删除其中的单击处理程序
var btns=$('.vote_like, .vote_dislike').on('click',function(e){
    e.preventDefault();
    var isLikeBtn=$(this).is('.vote_like');
    /* remove click handler for both, remove class from other button */
    btns.off('click').not(this).removeClass( isLikeBtn ? 'vote_dislike' : 'vote_like');
});

由于在两者上使用off等同于使用one

答案 4 :(得分:0)

Demo

$(function(){ 
    $('.vote_like, .vote_dislike').on('click',function(){
        $(this).siblings('.vote_like, .vote_dislike').add($(this)).prop('disabled',true);
        if ($(this).hasClass('vote_like')) {
            /* Do like things */     alert('like');
        }else{
            /* Do dislike things */  alert('dislike');
        }
    });
});