2015-08-17 5 views
1

У меня есть эта очень простая функция связывания:Могу ли я использовать прототип javascript для анимации при нажатии?

$('a.accordion-toggle').click(function() { 
    $(this).children('.glyphicon').toggleClass('glyphicon-chevron-right glyphicon-chevron-down'); 
}); 

который заменяет мой шеврон, когда я нажимаю строку текста. Я подумал вместо замены, оживляя вращение шеврона 90 градусов. Я просто прочитал про прототипы и как вы можете одновременно добавить функцию ко всем объектам этих прототипов. Мой вопрос (поскольку я новичок в прототипах), могу ли я создать прототип из селектора jquery и добавить к нему функцию?

Что-то подобное,

DropdownArrow = $('a.accordion-toggle') 
DropdownArrow.prototype.turn = function(){...} 

ответ

2

Я бы переключить класс по щелчку, который оживляет значок, например:

JS

$('a.accordion-toggle').click(function() { 
    $(this).children('.glyphicon').toggleClass('rotate-icon'); 
}); 

CSS

.rotate-icon{ 
    transform: rotate(180deg); 
} 

I've created a pen to show the animation working

Update

Я забыл упомянуть, что вам нужно добавить переход к элементу вы оживляющий, чтобы создать хороший плавный эффект анимации, например:

a { 
    transition: 350ms cubic-bezier(0.4,0.6,0.2,0.7); 
} 

вы также можете использовать легкость в использовании/облегчение и т. Д. Для облегчающей части, но здесь я использую кубический безье, который дает вам более тонкое управление ослаблением - here's a tool you can use to play around/learn about it

+0

Является прототипом способ не представляется возможным, не является предпочтительным, или просто не правильный способ сделать это? Это определенно выглядит как лучший способ сделать это, но я предполагаю, что я просто пытаюсь узнать, когда использовать прототип. – Jeff

+0

Я не делал этого с использованием прототипа, но он выглядит как излишне сложный способ сделать это, поскольку CSS может позаботиться об анимации, анимации CSS потрясающие, и если вы не делаете много анимаций сразу же, JS – Pixelomo

2

Вы можете, но как это:

$.prototype.turn = function(){ 
    //your function 
} 

$('a.accordion-toggle').turn(); 
+0

Так что бы добавить функцию поворота к объекту jquery? Наверное, я никогда об этом не думал. – Jeff

+0

Да, это так, и тогда вы можете позвонить в любое время. – Xlander

+0

Прохладный. Скажем, я хотел иметь его только для одного типа объектов ... мне нужно было бы создать класс или что-то еще? – Jeff

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