2015-09-01 120 views
1

我無法將類應用於上一個元素或下一個元素。jQuery禁用先前的跨度和下一個跨度,點擊跨度

enter image description here

<a href="#"><span class="glyphicon glyphicon-thumbs-up up"></span> 
<a href="#"><span class="glyphicon glyphicon-thumbs-down down"></span> 

我想禁用第二區間,當我點擊第一跨度,反之亦然。

$(document).on('click','.up, .down',function (e){ 
    e.preventDefault(); 
    if ($(this).hasClass('up')){ 
     var down = $(this).parent().nextAll('a.comment-vote-down'); 
     down.removeClass('disable-link').addClass('disable-link'); 
    }else if($(this).hasClass('down')){ 
     var up = $(this).parent().prevAll('a.comment-vote-up'); 
     up.removeClass('disable-link').addClass('disable-link'); 
    } 
}); 

example on jsfiddle

+0

https://jsfiddle.net/xnovq390/2/這是你想要的嗎? –

回答

0

試試這個:

$(document).on('click','.up, .down',function (e){ 
     e.preventDefault(); 
     if ($(this).hasClass('up')){ 
      var down = $(".down"); 
      down.removeClass('disable-link').addClass('disable-link'); 
     }else if($(this).hasClass('down')){ 
      var up = $(".up"); 
      up.removeClass('disable-link').addClass('disable-link'); 
     } 
    }); 
0

如果.up元素總是th E從.down一個前一個元素,你可以簡單地做:

$(document).on('click', '.up, .down', function(e) { 
    e.preventDefault(); 
    if ($(this).hasClass('up')) $(this).next().addClass('disable-link'); 
    else $(this).prev().addClass('disable-link'); 
} 
0
$(document).on('click','.up, .down',function (e){ 
     e.preventDefault(); 
     if ($(this).hasClass('up')){ 
      $(this).addClass('disable-link'); 
      $('span.down').removeClass('disable-link'); 

     }else if($(this).hasClass('down')){ 
      $(this).addClass('disable-link'); 
      $('span.up').removeClass('disable-link'); 
     } 
    }); 
0

至於其他的答案已經說明,沒有勺子元素與.comment-vote-down類。 但還使生活更輕鬆,你可以緩衝2個元素,結合點擊給他們,並禁止那些不點擊,減少了代碼

var btns = $('.up, .down'); 
btns.click(function(){ 
    btns.not(this).addClass('disable-link'); 
}); 

fiddle

如果你想禁用包含a,'其他人的父母可以通過鏈接父母():btns.not(this).parent().addClass('disable-link');(或.closest('a')如果有更深的層次結構)