JQuery-Mobile складное событие разворачивания / свертывания - PullRequest
20 голосов
/ 06 декабря 2011

Кто-нибудь знает какой-либо другой способ захвата события расширения или свертывания компонента, отмеченного data-role="collapsible", кроме события onclick его заголовка?

РЕДАКТИРОВАТЬ: Я хотел бы какое-то событие, которое также предоставит информацию о развернутом / свернутом состоянии компонента.

Ответы [ 5 ]

58 голосов
/ 06 декабря 2011

Для блоков collapsible существуют пользовательские события. Вы можете привязаться к событиям expand и collapse:

$('#my-collapsible').bind('expand', function () {
    alert('Expanded');
}).bind('collapse', function () {
    alert('Collapsed');
});

Вот jsfiddle: http://jsfiddle.net/6txWy/

13 голосов
/ 10 мая 2014

В jQuery Mobile 1.4 есть события collapsiblecollapse и collapsibleexpand .https://api.jquerymobile.com/collapsible/#event-collapse

$( ".selector" ).on( "collapsiblecollapse", function( event, ui ) {} );
3 голосов
/ 06 декабря 2011

Вы можете связать любое событие, которое хотите, например:

Демонстрация:

JS

$("div:jqmData(role='collapsible')").each(function(){
    bindEventTouch($(this)); 
});

function bindEventTouch(element) {
    element.bind('tap', function(event, ui) {
       if(element.hasClass('ui-collapsible-collapsed')) {
            alert(element.attr('id')+' is closed');
        } else {
            alert(element.attr('id')+' is open');
        }
    });
}

HTML

<div data-role="page" id="home">
    <div data-role="content">
        <div data-role="collapsible" id="number1">
           <h3>Header #1</h3>
           <p>I'm Header #1</p>
        </div>
        <br />
        <div data-role="collapsible" data-collapsed="false" id="number2">
           <h3>Header #2</h3>
           <p>I'm Header #2</p>
        </div>
    </div>
</div>
0 голосов
/ 06 декабря 2011

Вы можете попробовать событие jQuery mobile . Лично я не использовал его, но слышал, что он похож на обработчик событий mousedown. Если вы чуть подробнее рассказали о том, почему онклик не работает, возможно, мы могли бы помочь вам немного подробнее.

0 голосов
/ 06 декабря 2011

Я не думаю, что есть другой способ сделать это. Я не верю, что вы можете использовать animationComplete в этом случае, как описано здесь:
http://jquerymobile.com/test/docs/api/events.html

Может быть, вы можете использовать определенные изменения класса для определенных элементов, что на самом деле не лучше, чем привязка события onclick заголовка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...