2015-09-01 66 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')如果有更深的层次结构)