Вопрос по jquery-mobile – JQuery Mobile добавить анимацию в складной набор
Я хотел бы добавить анимацию в складной набор сjQuery Mobile. Let me show a simple example of this:
<code><div id="tiles" data-role="collapsible-set" data-iconpos="right"> <div class="tile" data-role="collapsible" data-iconpos="right">blablabla</div> <div class="tile" data-role="collapsible" data-iconpos="right">blablabla</div> <div class="tile" data-role="collapsible" data-iconpos="right">blablabla</div> </div> </code>
jQuery Mobile прекрасно с этим справляется и показывает мне складной набор из 3 предметов. То, что я хочу, - это АНИМАЦИЯ, однако я не вижу ничего в документации.
Я еще не проверял, насколько простоCSS animation(свойство анимации высоты) будет работать, однако есть лиjQuery Mobile способ сделать это, как повернуть какой-то внутренний флаг?
EDIT Я протестировал простой метод jQuery animate, и он действительно работает. На всякий случай кому-то еще это нужно. Он работает гладко даже на моем телефоне Android 528 МГц в браузере по умолчанию. Добавленный фрагмент действительно прост:
<code>$( ".ui-collapsible-heading" ).live( "click", function(event, ui) { $(this).next().css('height', '0').animate({ height: '100px' }); }); </code>
relative
так что дети используют его в качестве своего смещенного родителя.
Jasper
expand
а такжеcollapse
события для складных виджетов. Если вы связываетесь с этими событиями, вы можете остановить поведение по умолчанию и анимировать событие вместо этого. Смотрите мой ответ ниже.
Jasper
$('[data-role="collapsible"]').bind('expand collapse', function (event) {
$(this).find('p').slideToggle(500);
return false;
});
Мне понравилась идея, за которую ты шел, поэтому я немного поиграл с ней. Это связано с тем, что jQuery Mobile управляет складывающимися виджетами, поэтому он менее хакерский, чем привязка к элементу заголовка.
return false;
останавливает поведение по умолчанию, а другая строка переключает содержимое в / из поля зрения, используя jQueryslideUp
/slideDown
анимации. Вы также можете использовать.fadeToggle()
или катите свои собственные анимации. Если вы проверитеevent.type
Вы можете анимировать на основе события.
Вот демо:http://jsfiddle.net/VtVFB/
что в jQuery Mobile 1.4 и выше вам нужно привязать кcollapsibleexpand
а такжеcollapsiblecollapse
события вместоexpand
а такжеcollapse
, Таким образом, полный код становится
$('[data-role="collapsible"]').on('collapsibleexpand collapsiblecollapse', function(event) {
$(this).find('p').slideToggle(500);
return false;
});