2011-12-15 3 views
3

jQuery Mobile nous offre ces menus de sélection personnalisés sympas où le menu apparaît en superposition. J'essaye de joindre une fonction onclick à ces options mais puisque jQuery mobile remplace les balises d'option avec leurs propres balises générées. Je ne peux pas sembler obtenir la fonction à attacher aux "options" (qui sont réellement générées en tant que liens dénommés).Événement Fire onClick Menu Sélection JQuery Mobile

Répondre

5

Plutôt que de se lier à l'événement click pour les éléments « faux-option », comment sur la liaison à l'événement change pour l'élément <select>:

$('#the-select').on('change', function() { 
    var $this = $(this), 
     val = $this.val(); 
}); 

Voici une démo: http://jsfiddle.net/PQ39n/

Remarque que .on() est nouveau dans jQuery 1.7 et dans ce cas est le même que .bind().

EDIT

Si vous ne voulez lier à l'événement click pour les éléments "faux-option":

$('#the-page').on('click', '.ui-selectmenu-list > li', function() { 
    alert('onClick = ' + $('#the-select').children().eq($(this).attr('data-option-index')).val()); 
}); 

Voici une démonstration: http://jsfiddle.net/PQ39n/ (même démonstration que ci-dessus)

Dans cet exemple .on() est identique à .delegate().

+0

La liaison à l'événement 'change' sur le select est une bonne solution de repli, mais elle ne sera pas toujours utile car elle a une réponse très lente. Si vous voulez donner un feedback haptique (buzz sur l'option select), alors attendre avec le feedback jusqu'à ce que le menu select ait changé de valeur n'est pas utile. – Wytze