2010-02-21 4 views
2

Comment dois-je faire l'événement en direct (lorsque du nouveau contenu est injecté) avec la nouvelle façon de faire plusieurs événements jQuery:jQuery: plusieurs liaisons d'événements en direct

$('.foo', this).bind({ 
    click: function() { 
     //do thing 
    }, 
    mouseover: function() { 
     //do other thing 
    }, 
    mouseout: function() { 
     //do other other thing 
    }, 
    focus: function() { 
     //do other other other thing 
    } 
}); 

Par exemple, dans ce qui précède je besoin d'un contenu être lié avec le clic et tous les autres événements aussi.

En gros, j'essaie d'éviter d'écrire:

$('.foo', this).live('click', function() { 
    //do thing 
    } 
}); 
$('.foo', this).live('mouseover', function() { 
    //do other thing 
    } 
}); 
$('.foo', this).live('mouseout', function() { 
    //do other other thing 
    } 
}); 
$('.foo', this).live('focus', function() { 
    //do other other other thing 
    } 
}); 

Répondre

4

Si vous voulez que chaque événement pour faire des choses uniques, vous allez avoir une tâche verbeux sur vos mains. Si vous aviez besoin de chaque événement pour faire la même chose, ce serait une tâche beaucoup plus courte. Vous pouvez lier plusieurs événements, mais il va encore être un peu bavard:

$('.foo', this).live('mouseover mouseout', function(e) { 
    if (e.type == 'mouseover') { 
    // do something on mouseover 
    } else 
    if (e.type == 'mouseout') { 
    // do something on mouseout 
    } 
}); 

Et encore, s'ils ont tous fait la même chose, ce serait plus simple:

$('.foo', this).live('mouseover mouseout', function(){ 
    // do something on both events 
}); 

Documentation: http://api.jquery.com/live/

4

.........

$('.fastlook', this).live('click', function() { 
    // more code....... 
    } 
}); 

Edit:

Si vous souhaitez affecter plusieurs événements, juste les séparer avec de l'espace, par exemple:

$("selector").live('click mousemove mousedown', function(){ 
    // more code............. 
}); 

..........

chaîne de eventTypeA contenant un type d'événement JavaScript , tels que "cliquez sur" ou "keydown." À partir de jQuery 1.4, la chaîne peut contenir plusieurs types d'événements séparés par des espaces ou des noms d'événements personnalisés .

Source: http://api.jquery.com/live/

+0

Ce n'est pas tout à fait ce que je cherchais, de ma faute, j'ai édité la question pour la rendre plus claire. – Smickie

+0

@Smickie: j'ai mis à jour ma réponse après avoir jeté un oeil à votre question mise à jour, voir la partie Edit dans ma réponse, merci :) – Sarfraz