2010-05-27 7 views
2

, je dois pouvoir régler infobulles sur les boutons ... je le code suivant:jquery bouton de dialogue ui

buttons: { 
'My Button' : function(e) { 
    $(e.target).mouseover(function() { 
     alert('test'); 
    }); 
} 

Cela me permet de faire quelque chose sur « mouseover » mais seulement une fois que le bouton a été cliqué. Que dois-je faire pour faire cette fonction avant que le bouton ait été cliqué?

Merci

Répondre

1

Ce que vous allez faire est d'avoir un gestionnaire pour l'événement "open" dans la boîte de dialogue. Ce gestionnaire aura besoin d'explorer le DOM vers le conteneur externe <div> avec lequel le code de dialogue encapsule le contenu de votre boîte de dialogue. De là, il doit trouver la boîte où les boutons sont, puis attacher vos gestionnaires le cas échéant.

Je ne me souviens pas exactement des noms de classes (utilisez Firebug) mais le code de dialogue utilise des balises de classe assez évidentes pour marquer les différents conteneurs. Il y a un conteneur externe, et après votre boîte de contenu il y a un <div> pour les boutons. Encore une fois, affichez votre boîte de dialogue et utilisez Firebug pour voir à quoi ressemble la structure.

Vous pouvez configurer un gestionnaire "ouvert" dans vos options d'initialisation.

+0

$ ('. Ui-dialog-buttonpane button: nth-child (1)'). Mouseover (function() { // faire quelque chose }); – mike

+0

Oui, cela fonctionne, mais s'il y a plusieurs boîtes de dialogue sur la page, vous voudrez l'étendre en travaillant vers le haut puis vers le bas à partir de chaque boîte de dialogue. Bien sûr, si le même comportement mouseover est souhaité pour tous les boutons similaires sur toutes les boîtes de dialogue, alors c'est bien. – Pointy

0

Il ne peut les incendies une fois cliqué sur le bouton parce que cette fonction est tiré sur un clic.

Sélectionnez simplement ce bouton de la manière normale (par exemple, $('#my-form button')), puis joignez l'événement mouseover.

+0

Le problème est que le code de dialogue jQuery synthétise les boutons à la volée. Ils ne sont pas explicitement codés sur la page. – Pointy

+0

Je suis sûr qu'ils apparaissent comme des éléments. Peut-être pas dans le balisage initial, mais ajouté via JavaScript. Ajoutez simplement les événements une fois que vous savez qu'ils ont été inclus dans la page. – alex

+0

A droite, @alex, c'est ce que je cherchais dans ma réponse :-) – Pointy