2015-05-11 2 views
0

Я использую этот плагин https://github.com/simontabor/jquery-toggles для переключения элемента на моей странице.JQuery toggler - Нажмите один переключатель, чтобы обновить еще один

Плагин отлично работает на одном объекте.

$('.toggle').toggles({ 
    on: true, 
    text:{ 
     on:'COMPLETE', 
     off:'INCOMPLETE' 
    } 
}); 

$('.toggle').on('toggle', function (e, active) { 
    if(active) { 
     $(this).removeClass('off'); 
     $(this).addClass('on'); 
    } else { 
     $(this).removeClass('on'); 
     $(this).addClass('off'); 
    } 
}); 

Но у меня есть два одинаковых элемента: один сверху и один внизу.

Я пытаюсь одновременно обновить (переключить). Я попробовал только таргетинг на этот класс, но это не помогло:

$('.toggle').toggles({ 
    on: true, 
    text:{ 
     on:'COMPLETE', 
     off:'INCOMPLETE' 
    } 
}); 

$('.toggle').on('toggle', function (e, active) { 
    if(active) { 
     $('.toggle').removeClass('off'); 
     $('.toggle').addClass('on'); 
    } else { 
     $('.toggle').removeClass('on'); 
     $('.toggle').addClass('off'); 
    } 
}); 

Любые идеи?

Я попытался с помощью каждого, но это не совсем работает http://giphy.com/gifs/3o85xxJ7f2fYakUzQs

+1

you shoul использовать 'each', так как вы хотите удалить и добавить класс на несколько элементов ... – Random

+1

у вас есть опечатка. Если у вас есть '$ (this)' вы написали '$ (. Toggle)', но должны быть '$ ('. Toggle')' –

+0

Спасибо Lelio, я обновил. У меня был код в моем коде. Просто не задавайте вопрос – GavinS

ответ

1

попробуйте добавить эту строку

$('.toggle').toggles(active); 

в .on event like this

$('.toggle').toggles({ 
    on: true, 
    text:{ 
     on:'COMPLETE', 
     off:'INCOMPLETE' 
    } 
}); 


$(".toggle").on("toggle", function(e, active) { 

    $('.toggle').toggles(active); 

    if(active) { 
     $('.toggle').removeClass('off'); 
     $('.toggle').addClass('on'); 
    } else { 
     $('.toggle').removeClass('on'); 
     $('.toggle').addClass('off'); 
    } 

}); 
+0

Спасибо, что, похоже, сработало. Документы не очень хороши в плагине, но это сработало. – GavinS

1

Вы должны обрабатывать каждый элемент отдельно:

$('.toggle').on('toggle', function (e, active) { 
    $.each($('.toggle'), function(index, element) { 
     if(element.hasClass('off')){ 
      $('.toggle').removeClass('off'); 
      $('.toggle').addClass('on');   
     } 
     if(element.hasClass('on')){ 
      $('.toggle').removeClass('on'); 
      $('.toggle').addClass('off');   
     } 
    }); 
}); 
+0

у вас есть опечатка. Вы написали $ (. Toggle), но должны быть $ ('. Toggle') –

+0

Вы правы. Я только что скопировал с Op. Благодаря! – ImreNagy

+0

Вы уверены, что знаете этот код? Я бы поместил 'each' внутри' if'. Здесь вы рассмотрите оба элемента, которые имеют разные состояния 'on' и' off', и переключают оба ... – Random

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