Метад 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. калі няма, то дадайце HTTP ў пачатку HREF
дададзена аўтар Hesham Yassin, крыніца
ён не ўключаецца клас. Пасля некаторага непажаданага анімацыі, клас застаецца тым жа.
дададзена аўтар Devashish Dixit, крыніца

7 адказы

Я сутыкаўся з гэтай праблемай раней і марна шмат часу, спрабуючы высветліць, што адбываецца не так.

Я да гэтага часу не ведаю, чаму switchClass часам не працуе, але ў мяне ёсць абыходны шлях:

замяшчаць

switchClass('circle','square');

з

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

Надзея, што дапамагае.

23
дададзена
Ёсць вызначана праблемы з метадам switchClass. Для мяне гэта займае каля секунды, каб ўступілі ў сілу. На шчасце, ваша рашэнне працуе :)
дададзена аўтар Satbir Kira, крыніца

калі PRB з'яўляецца

<Р> .switchClass не з'яўляецца функцыяй

праверыць, калі вы звязаць <моцны> effects.core.js у кодзе

праверыць, што з дапамогай кансолі ў вашым навігатары для JS, поспехі гэта выдатна працуе для мяне :)

2
дададзена
дададзена аўтар Abdelouahab, крыніца
да я ўжо ведаю, але паглядзіце: http://api.jqueryui.com/category/эфекты стрыжнем «Функцыянальныя магчымасці, якія прадстаўляюцца effect.js. у дадатак да метадаў, пералічаных ніжэй, effect.js таксама ўключае ў сябе некалькі easings.»
дададзена аўтар Yassine Sedrani, крыніца
$(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. Калі вы зробіце гэта зноў, гэта прывядзе да выдалення класа 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» і «бар». Так як Foo ўжо прысутнічае будзе выдаліць яго і дадаць радок. На наступным бар выкліку будзе прысутнічаць, так што я выдалю яго і дадаць Foo. І гэтак далей.

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

0
дададзена

Пераканайцеся ў тым, што класы, якія вы выкарыстоўваеце не мае «Важна!» ўласцівасці. Я інвесціравана і выявіў, што jQuery UI камутатар клас не працуе для уласцівасцяў з «!» Важнымі тэгамі.

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
дададзена