0

最初にクリックされた場合に別のボタンをクリックしないようにする方法...

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');
4

5 に答える 5

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!');
    });
});

デモ:フィドル

于 2013-11-10T04:33:03.827 に答える
1

各ボタンにハンドラーをアタッチしたため、 jquery docs.oneに従って、最大でも 1 回実行されます。クリックを防ぐには、クリックされた後にハンドラーを削除する必要があります。

     $('.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
   });
于 2013-11-10T04:36:36.893 に答える
0

両方のボタンに 1 つのハンドラーを使用し、両方のボタン内のクリック ハンドラーを削除できます。

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

于 2013-11-10T04:37:41.713 に答える
0

デモ

$(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');
        }
    });
});
于 2013-11-10T04:39:48.583 に答える