Quelqu'un connaît-il un autre moyen de capturer l'événement de développement ou de réduction d'un composant marqué par data-role="collapsible"
en dehors de l'événement onclick
de son en-tête?
EDIT: Je voudrais une sorte d'événement qui fournira également des informations sur l'état développé/réduit du composant.
Il existe des événements personnalisés pour les blocs collapsible
. Vous pouvez vous lier aux événements expand
et collapse
:
$('#my-collapsible').bind('expand', function () {
alert('Expanded');
}).bind('collapse', function () {
alert('Collapsed');
});
Voici un jsfiddle: http://jsfiddle.net/6txWy/
Dans jQuery Mobile 1.4, il y a les événements collapsiblecollapse et collapsibleexpand . https://api.jquerymobile.com/collapsible/#event-collapse
$( ".selector" ).on( "collapsiblecollapse", function( event, ui ) {} );
Vous pouvez lier n'importe quel événement que vous voulez, par exemple:
Démo:
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>
Vous pouvez essayer l'événement jQuery mobile tap. Je ne l'ai pas utilisé personnellement, mais j'entends qu'il est similaire au gestionnaire d'événements mousedown
. Si vous avez donné un peu plus de détails sur les raisons pour lesquelles onclick ne fonctionne pas, nous pourrions peut-être vous aider un peu plus.
Je ne pense pas qu'il existe une autre façon de procéder. Je ne pense pas que vous puissiez utiliser animationComplete
dans ce cas comme décrit ici:
http://jquerymobile.com/test/docs/api/events.html
Vous pouvez peut-être utiliser certaines modifications de classe sur les éléments spécifiques, ce qui n'est pas mieux que de lier un événement onclick de l'en-tête.