2012-07-02 17 views
5

Ich bin neu in Javascript/jQuery und ich versuche, eine Play-Taste für HTML5-Video-Wiedergabe zu machen. Mein Code so weit:

//return a jQuery object 
var video = $('#myVideoTag'); 

//Play/Pause control clicked 

$('.btnPlay').on('click', function() { 
    if(video[0].paused) { 
     video[0].play(); 
    } 
    else { 
     video[0].pause(); 
    } 
    return false; 
}); 

Ich erhalte diese Fehlermeldung:

$(".btnPlay").on is not a function 
[Break On This Error] 

$('.btnPlay').on('click', function() { 

Ich kann nicht für das Leben meiner herauszufinden, was falsch ist. Ich habe die Klasse .btnPlay richtig auf der Seite definiert. Ich folge einem Tutorial, das eine identische Methode ohne Probleme zu verwenden scheint. Irgendwelche Ideen?

Antwort

8

Methode on wurde in jQuery Version 1.7 eingeführt.

Ich denke, Sie müssen Ihre jQuery-Bibliothek auf die newest version aktualisieren.

Andernfalls können Sie bind verwenden:

$('.btnPlay').bind("click", function() { 
    // ... 
}); 

oder seine Abkürzung Methode click:

$('.btnPlay').click(function() { 
    // ... 
}); 
0

Eine Alternative zur .on Methode auf älteren Versionen von Javascript .delegate ist. Sie sollten .delegate('.btnPlay', 'click', function(){...}) auf dem übergeordneten Element verwenden, um die gleiche Funktionalität

1

Ab jQuery 1.7, .delegate() wurde von der .on() Verfahren abgelöst zu haben. Für frühere Versionen bleibt es jedoch das effektivste Mittel, um das Ereignis Delegation.delegate() zu verwenden. Eine andere Alternative ist die .live() aber seit Version 1.7 ist veraltet. Benutzer älterer Versionen von jQuery sollten .delegate() anstelle von .live() verwenden.