2012-04-10 7 views
1

In Ordnung haben wir gearbeitet, um zu jQuery 1.7 neue und verbesserte .on() Funktion statt auf .live().Binden Sie mehrere Ereignisse in einzelne .on() Call

Hier ist, was mich, wenn Sie mehrere Bindungen haben, .live() war großartig, lassen Sie sie alle in einer einfachen Funktion. Zum Beispiel:

$('.my_thing').live({ 
    mouseover: function(e) { 
    console.log('hey imma moused over'); 
    }, 
    mouseout: function(e) { 
    console.log('hey imma moused out'); 
    } 
}); 

Sehr einfach! Wie würdest du das mit .on() machen? Hier ist so nah wie möglich und es fühlt sich immer noch chaotisch an.

$(document).on('mouseover','.my_thing', function(e) { 
    console.log('hey imma moused over'); 
    }).on('mouseout','.my_thing', function(e) { 
    console.log('hey imma moused out'); 
}); 

Fühlt sich chaotisch an, nein? Es muss einen besseren Weg geben.

PS - Dies hat eine der schlimmsten Funktionen sein HAUPT wenn Sie versuchen, mehr darüber auf Google zu lernen.

+1

Art der Ironie, dass Sie die Dokumentation verknüpfen, wo die Antwort kann an der Spitze zu finden: P – Esailija

+0

Ist das was .on (events-map [, selector] [, data])? Manchmal schaue ich mir diese Dinge ohne Beispiele an. – Mojowen

Antwort

2

verwenden müssen einfach ein Ereignis zusätzlich zu einer Wahl Karte:

$(document).on({ 
    mouseover: function(e) { 
     console.log('hey imma moused over'); 
    }, 
    mouseout: function(e) { 
     console.log('hey imma moused out'); 
    } 
}, '.my_thing'); 

Here's a demo.

4
$(document).on({ 
    mouseover: function(e) { 
    console.log('hey imma moused over'); 
    }, 
    mouseout: function(e) { 
    console.log('hey imma moused out'); 
    } 
}, '.my_thing'); 
Verwandte Themen