2015-09-01 1 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/ является ли это то, что вы хотели? –

ответ

1

Вы пытаетесь найти класс .comment-vote-down, который не существует в вашем HTML код

https://jsfiddle.net/xnovq390/4/

+0

ОК, спасибо, что он работает сейчас. –

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

Это потому, что дон У меня есть a с классом .comment- голосования или голосования.

Либо взять эту часть вашего nextAll выбора:

.nextAll('a'); 

https://jsfiddle.net/xnovq390/1/

или добавьте в класс к вашему HTML:

<a href="#" class="comment-vote-up"> 

https://jsfiddle.net/xnovq390/3/

0

Если .up элемент всегда е предыдущий элемент из .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'), если есть более глубокая иерархия)

Смежные вопросы