jQuery UI switchClass () әдісі дұрыс жұмыс істемейді

jQuery UI switchClass() method doesn't switch class, rather it performs some undesired animations and the class remains the same as the original one when I use jquery.animate-enhanced.js for hardware accelerated animations.
Any Idea about how can I fix it?

7
Мәселені қайталайтын jsfiddle постын жібере аласыз ба?
қосылды автор Connor, көзі
және неге ол дұрыс жұмыс істемейді? сіз «дұрыс жұмыс істемеген» мінез-құлқын түсіндіре аласыз ба?
қосылды автор Poelinca Dorin, көзі
браузерде шолғышты түзету құралында (F12) желілер қойындысына өтіп, CSS және JS файлдарын жүктеудің сәтті екеніне көз жеткізіңіз. егер болмаса, href басында http қосыңыз
қосылды автор Hesham Yassin, көзі
ол сыныпты ауыстырмайды. Кейбір анимациядан кейін класс сол қалпында қалады.
қосылды автор Devashish Dixit, көзі

7 жауаптар

Мен бұл мәселені бұрын-соңды кездестірдім және дұрыс емес нәрсені анықтауға тырыстым.

Мен switchClass кейде жұмыс істемейтінін білмеймін, бірақ менде уақытша шешім бар:

Ауыстыру

switchClass('circle','square');

бар

addClass('square').removeClass('circle');

Бұл көмектеседі деп үміттенемін.

23
қосылды
SwitchClass әдісімен белгілі бір проблемалар бар. Мен үшін күшіне ену үшін шамамен бір секунд қажет. Бақытымызға орай, сіздің шешіміңіз жұмыс істейді :)
қосылды автор Satbir Kira, көзі

егер prb болса

.switchClass функциясы емес

кодыңыздағы effects.core.js сілтемесі бар-жоғын тексеріңіз

js-ге арналған штурманың ішіндегі консольді пайдалану арқылы, бұл сәттілік маған жақсы жұмыс істейтінін тексеріңіз :)

2
қосылды
бірақ бұл жерде api.jqueryui.com/switchclass
қосылды автор Abdelouahab, көзі
$(function(){
   $('#circle').click(function(){
      $('.circle').switchClass('circle', 'square', 'slow');
      $('.square').switchClass('square', 'circle', 'slow');
      return: false
   });  
});

Осы мысалда #circle Div басуында барлық нысандардан .circle сыныбын алып тастап, оны .square сыныбымен алмастырамын. Егер .circle сыныбы жойылмаса, онда .square класы жойылады және .circle сыныбымен ауыстырылады. Бұл ауыстыру әсері.

Егер алмасаңыз, жоғарғы немесе төменгі бөлікті алып тастаңыз.

2
қосылды

jQueryUi файлын қосқаныңызды тексеріңіз

<script type="text/javascript" src="https://code.jquery.com/ui/1.8.23/jquery-ui.min.js"></script>
1
қосылды

Мен бұл мәселені бұрын қарсы алдым, бірақ шешім таба алмадым. Содан кейін проблеманы шешу үшін toggleClass() қолданамын. Міне мысал:

Егер элемент басында X класы болса, онда келесідей жазыңыз:

$(element).toggleClass("Y");

Бұл Y сыныпты қосады. Егер сіз мұны қайтадан жасасаңыз, ол сыныпты алып тастайды.

Reference: http://api.jquery.com/toggleclass/

Бұл көмектеседі деп үміттенемін.

0
қосылды

Мен екі класстың арасында ауысқыңыз келетінін болжап отырмын. Мұндай жағдайда toggleClass функциясымен істей аласыз.

 //first you start with one of the classes in html:
    <div class="foo"></div>
    //then in JS you do:
    var element = ...;
    $(element).toggleClass('foo bar');

Бұл «foo» және «bar» екеуін де ауыстырады. Foo қазірдің өзінде бар болғандықтан, оны жойып, жолақты қосады. Келесі қоңырау шлюзінде қатысады, сондықтан мен оны алып тастап, foo қосамын. Және тағы басқа.

If something is not clear here is a jsfiddle example: https://jsfiddle.net/09qs86kr/1/

0
қосылды

Қолданыстағы класстардың «! Маңызды» сипаттарының жоқтығына көз жеткізіңіз. Мен jQuery UI switch сыныбының қасиеттері үшін «! Important» тегтерімен жұмыс істемейтінін анықтадым.

Reason : Consider that your previous class had style "padding : 0" and your new class has "padding:100". You have added switchClass duration for 100 ms. What jQuery will do for this is, it will add a style to your element by increasing padding by "1" in every 1 ms. But, as the previous class is still there in the element with a "padding : 0 !important", after 10 ms, "padding : 10" style added by jQuery doesn't effect the UI. After 100 ms, jQuery will execute removeClass("previousClass") and addClass("newClass"). this will result to a instant change in style reflected in the UI.

Бұл менің түсінуім. Сіз туралы не ойлайтыны туралы маған хабарлаңыз.

0
қосылды