2017-12-05 20 views
0

비디오를 통해 자동으로 비디오를 재생하는 이미지를 클릭하면 비디오 위에 커버 이미지를 보여주는 코드가 있습니다. 현재이 코드는 한 페이지에서 하나의 비디오에 대해 작동합니다 (ID를 사용하기 때문에).jQuery를 사용하여 한 페이지에서 비디오를 여러 번 재생하는 경우

코드는 Vimeo를 제어하고 재생하기 위해 Froogaloop에 기울고 있습니다. 이 페이지에 1 개 이상의 비디오와 함께 작동 할 수 있도록 나는 다음과 같은 코드를 변환하는 방법을 jQuery를 사용

(현재는 나누기) :

<div class="video-wrapper"> 
    <div class="bg-image" id="play-me"> 
     <span class="play"> 
     <i class="i-play"></i> 
     </span> 
    </div> 
    <iframe src="" id="video"></iframe> 
</div> 
:

// Control Vimeo videos 
var iframe = document.getElementById('video'); 

// $f == Froogaloop 
var player = $f(iframe); 

var playButton = document.getElementById("play-me"); 

playButton.addEventListener("click", function() { 
    player.api("play"); 
    $('.bg-image').addClass('hide-me'); 

    setTimeout(function(){ 
     $('.bg-image').css('z-index','-1'); 
    }, 1000); 
}); 

이 내 HTML입니다

+0

동영상 ID 뒤에 클래스를 사용하거나 임의의 숫자를 추가하십시오. –

+0

@ColinCline 어떻게해야합니까? – egr103

+0

이 페이지 또는'.video-wrapper'에는 여러 개의 동영상이 포함될 수 있습니까? sry 나는이 커뮤니티가 downvote 대신 응답 –

답변

0

Conver 유럽 식별자 : 이것에

<div class="video-wrapper"> 
    <div class="bg-image" class="play-me"> 
     <span class="play"> 
     <i class="i-play"></i> 
     </span> 
    </div> 
    <iframe src="" class="video"></iframe> 
</div> 

와의 js/jQuery를 수정

var playButton = $(".play-me"); 

playButton.get(0).addEventListener("click", function() { 
    var iframe = $(this).next('.video').get(0),// or use closest() based on your condition 
    player = $f(iframe); 
    player.api("play"); 
    $(this).addClass('hide-me'); 

    setTimeout(function(){ 
     $(this).css('z-index','-1'); 
    }, 1000); 
}); 

경우로 .closest()를 사용, 같은 .video-wrapper 내부에 더 많은 동영상을 추가했다 그렇지 않으면 정상적으로 댓글을 달았습니다 .next() 잘 동작합니다.

설명 : 그 코드는 단지 우리가하지 클릭 해당 요소에 변경을 할 것입니다 우리가 확신 할 $(this)을 사용하여 .

+0

에서 – egr103

+0

@ egr103'id = "play-me"를'class = "play-me로 변경했습니다. "HTML에서 –

+0

@ egr103 좋은 전화. jquery 개체를 일반 js 처리기로 바인딩하려고했습니다. 지금 수정되었습니다. –

0

페이지에 복수 play-me 개의 요소가 있다고 가정하고 ID 대신 클래스를 할당하십시오. 그런 다음 기존 코드가 포함 된 클릭 핸들러를 추가하고 this을 사용하여 클릭 한 요소에서 메소드 호출이 호출되도록합니다.

시간 제한에 z-index을 설정 했으므로 그 밖의 모든 것을 넣을 수도 있습니다.

$('.play-me').on('click', function(e) { 
    var $this = $(this); 

    setTimeout(function() { 
    player.api('play'); 

    $this 
     .css('z-index', '-1') 
     .addClass('hide-me'); 
    }, 1000); 
}); 
+0

을주는 rdy이기 때문에 너무 많은 의견을 묻습니다. 코드를 사용할 때 플레이어가 콘솔에 정의되어 있지 않습니다. – egr103

+0

.play-me와 .video 모두에 대한 클래스 이름을 변경 한 후에 오류가 발생합니다. – egr103

+0

내 코드에서 'player'는 아무 것도 불평하지 않는 플레이어 API 일 수 있습니다. 그들의 문서화 상태가 그것을 작동시키기 위해 어떤 방법으로 쓰여 져야한다고 말합니까? 속도와 프로그래머의 지식의 부족을 강화하기위한 –

0

비디오는 어떻게 설치 되나요? html로 하드 코딩 되었습니까? 나는 코멘트를 할 수 없다, 이것은 코멘트 여야한다 ... Btw, 왜 jquery와 일반 자바 스크립트와 혼합? 클래스에

+1

몇 번, 그/그녀는 내가 당신의 코드 I를 복사 할 때 어떤 이유로 내 옆 :) –

+0

아니 나쁜 것은, 단지 호기심을 모두 (그 나쁜 일을) 사용했다 이 행이 함수가 아니라는 콘솔 오류가 발생합니다 : 'playButton.addEventListener ("click", function() {' – Kalabalik