2013-06-21 3 views
0

Comment envoyer des propriétés à des événements personnalisés? J'essaie quelque chose comme ça ... Peut-être existe-t-il une autre structure pour résoudre ces fonctions?Comment envoyer des propriétés à des événements personnalisés?

var mme=document.getElementById('mme'); 

mme.event1=function(prop){ 
alert(prop.property); 
} 
mme.event2=function(prop){ 
alert(prop.property); 
} 
//////// 
mme.eventN=function(prop){ 
alert(prop.property); 
} 

$(mme).trigger('eventX',{property:'Hello World!'}); 

Répondre

1

Il semblerait que vous manquez les événements et les méthodes.

// Native Method 
mme.event1 = function(argument) { 
    alert(argument); 
}; 

// Native Event Handler 
mme.onevent1 = function(event, argument) { 
    alert(argument); 
}; 

// jQuery Event Handler 
$(mme).on("event1", function(event, argument) { 
    alert(argument); 
}); 

Lorsque vous déclenchez un événement, jQuery appellera le gestionnaire jQuery, le gestionnaire natif, puis la méthode native. Seuls les gestionnaires auront les paramètres transmis. La méthode native est appelée sans paramètres.

De jQuery v1.9.1, ligne 3018: Type

elem[ type ](); 

est le nom de l'événement.

Ce jsFiddle montre tous les trois étant appelés: http://jsfiddle.net/nV8qg/2/

+0

aucun argument retournant dans ce cas – Aleksov

+0

J'ai mis à jour ma réponse avec un gestionnaire DOM qui est passé arguments –

+0

Très intéressant, n'aurait jamais pensé à mettre le 'sur' avant l'événement – Aleksov

2

Vous pouvez le faire -

$('#mme').on('event1', function (e) { 
    console.log(e.hello); 
}); 

var e = $.Event("event1", { 
    hello: "Hello" 
}); 

$('#mme').trigger(e); 

Démo ------>http://jsfiddle.net/fh2eC/

+0

Ceci est une bonne solution et je l'ai utilisé auparavant, mais dans ce cas, je ne peux pas faire quelque chose comme ceci '' mme.eventN ({propriété : 'Hello World!'}) '' – Aleksov

Questions connexes