Les fonctions de survol et de clic peuvent être combinées en une seule, par exemple:
cliquez sur:
$('#target').click(function() {
// common operation
});
flotter:
$('#target').hover(function () {
// common operation
});
peuvent-ils être combinés en une seule fonction?
Merci!
Utilisez la composition de programmation de base: créez une méthode et passez la même fonction à click
et hover
comme rappel.
var hoverOrClick = function () {
// do something common
}
$('#target').click(hoverOrClick).hover(hoverOrClick);
Deuxième voie: utiliser bind
on
:
$('#target').on('click mouseover', function () {
// Do something for both
});
jQuery('#target').bind('click mouseover', function () {
// Do something for both
});
Utilisez mouseover au lieu de survoler.
$('#target').on('click mouseover', function () {
// Do something for both
});
Vous pouvez utiliser .bind()
ou .live()
selon le cas, mais pas besoin de nommer la fonction:
$('#target').bind('click hover', function () {
// common operation
});
ou si vous faisiez cela sur beaucoup d'éléments (pas beaucoup de sens pour un IE sauf si l'élément change):
$('#target').live('click hover', function () {
// common operation
});
Notez que cela ne liera que l'argument de vol stationnaire first, l'événement mouseover
, il n'accrochera rien à l'événement mouseleave
.
$("#target").hover(function(){
$(this).click();
}).click(function(){
//common function
});
var hoverAndClick = function() {
// Your actions here
} ;
$("#target").hover( hoverAndClick ).click( hoverAndClick ) ;
Vous pouvez également utiliser bind :
$('#myelement').bind('click hover', function yourCommonHandler (e) {
// Your handler here
});
je pense que la meilleure approche est de créer une méthode commune et d'appeler survoler et cliquer événements .
$("#target").on({
hover: function(){
//do on mouse hover
},
click: function(){
//do on mouse click
}
});