2012-07-02 16 views
5

Jestem nowicjuszem w JavaScript/jQuery i próbuję zrobić przycisk odtwarzania odtwarzania wideo HTML5. Mój kod do tej pory:

//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; 
}); 

Wciąż otrzymuję ten błąd:

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

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

nie mogę dla życia mojego dowiedzieć się, co jest nie tak. Mam poprawnie zdefiniowaną klasę .btnPlay na stronie. Śledzę samouczek, który wydaje się używać identycznej metody bez problemów. Jakieś pomysły?

Odpowiedz

8

Metoda on została wprowadzona w wersji jQuery 1.7.

Myślę, że musisz zaktualizować bibliotekę jQuery do newest version.

W przeciwnym razie, można użyć bind:

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

lub sposób jej skrót click:

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

Alternatywnym sposobem .Na na starszych wersjach JavaScript jest .delegate. Należy użyć .delegate('.btnPlay', 'click', function(){...}) na elemencie macierzystym mają taką samą funkcjonalność

1

As of jQuery 1.7, .delegate() została zastąpiona metodą .on(). W przypadku wcześniejszych wersji pozostaje jednak najskuteczniejszym sposobem wykorzystania wydarzenie delegacja.delegate().

Inną alternatywą jest .live(), ale ponieważ wersja 1.7 jest przestarzała. Użytkownicy starszych wersji jQuery powinni używać .delegate() zamiast .live().