2012-07-15 2 views
0

원래 문제를 해결하는 데 도움이되는 코드 조각을 발견했습니다. 일부 콘텐츠에 비디오가있는 탭이있는 콘텐츠 섹션이 있습니다. 비디오를 재생 한 다음 다른 탭을 선택하면 비디오가 백그라운드에서 계속 재생됩니다. 내가 생각하는 공통적 인 문제 :jQuery 복제 및 제거 div가 div를 다시 추가하지 않음

어쨌든 작동하는 것으로 보이는 코드가 있지만 분명히 잘못된 것을 수행했습니다. 이것은 코드입니다 :

// stop video playback when div is hidden 
$('.contextual-help-tabs li').click(function() { 
    var test = $('.contextual-help-tabs-wrap div.active').attr('id'); // gets previously active div ID 
    var clone = $('#'+test).clone(true);        // clones the previously active div 
    $('#'+test).remove();            // removes the previously active div 
    $('#'+test+'-holder').html(clone);         // puts it back like new 
}); 

문제는 다음과 같습니다. test 실제로 올바른 div를 반환합니다. 이전에 열린 탭의 현재 ID 및 활성 ID 앞에있는 ID를 가져옵니다. 그건 대접이야. 그것은 또한 잘 div를 제거하고있어.

그러나 다시 들어오지는 않습니다. 무슨 일이 일어나고 있는지 알기 위해 "경고"를 띄우면 div를 제거하지만 결코 되돌릴 수 없습니다 (다시 "정의되지 않음"으로 표시됨). 따라서 clone이 복제되지 않거나 $('#'+test+'-holder').html(clone);이 작동하지 않는지 나는 알 수 없습니다. 보조 노트로

, 나는이 대안 사용하여 시도 :

// stop video playback when div is hidden 
$('.contextual-help-tabs li').click(function() { 
    var test = $('.contextual-help-tabs-wrap div.active').attr('id'); // gets previously active div ID 
    var clone = $('#'+test).clone(true);        // clones the previously active div 
    $('#'+test).replaceWith(clone);        // replaces the previously active div with the "refreshed" contents of the div 
    }); 

을하고 실제로 잘 작동했다 -는 콘텐트와 교체되었다 (비디오 재생이 중지)하지만 - 나는 video이있는 경우 태그 (예 : HTML5 동영상 재생)를 사용하면 어떤 이유로 인해 동영상이 손실됩니다. 반환 된 HTML은 정확하게는이지만 이해할 수없는 이유로 동영상이 더 이상 인식되지 않고 아무 것도 재생하지 않습니다. 동영상이 전혀 보이지 않는 것처럼 작동하거나 잘못된 경로입니다. (이게 더 이상 인식하지 못하는 DOM과 관련이 있다고 가정합니다.)

아무도 내가 고칠 수있는 방법을 알고 있습니까? 코드 버전이 있습니까? 왜냐하면 나는 여기서 무슨 일이 일어나는 지 보지 못하기 때문이다.

감사합니다.

ETA : replaceWith() 함수를 사용하는 경우 HTML5 비디오가있는 탭으로 이동하여 을 재생 한 다음을 재생 한 다음 탭을 교체하면 탭으로 돌아갈 때 동영상을 계속 재생하면 동영상이 계속 표시되고 정상적으로 작동하며 '재생'을 클릭하면 처음부터 다시 시작하는 대신 탭을 바꾼 시점부터 재생됩니다.

동영상이있는 탭으로 이동하여 HTML5 동영상을 재생하기 전에 다른 탭으로 이동하면 HTML5 동영상이있는 탭으로 돌아간 다음 동영상이 사라집니다. 정말 이상합니다.

도움이된다면 지금까지는 Google 크롬에서만 발생합니다. 아직 문제가 다른 브라우저에 있는지 확인하지 않았습니다.

+0

당신이 jsfiddle에 게시 할 수 있습니다 난이 나를 위해 일한 같은 문제가 없었다이

var video = $('#videoDivId').detach(); // you can also declare this var global then use it in some other function $('#someDifferentDiv').append(video); 

처럼 몇 가지 변수를 할당 할 수 있습니다 무엇을 ? – Samson

+1

오! 이 얼마나 멋진 사이트! 그걸 들어 본 적이 없어! 어디 보자 ... – Shelly

+0

좋아, 미안해. 천천히. http://jsfiddle.net/bKeCv/ – Shelly

답변

-1

.html() 메소드를 jQuery 객체와 함께 사용할 수 없습니다. 하나는 문자열을 사용해야합니다.

편집 : 여기에 .html(clone) 코드를 찾았습니까?

+1

http://jsfiddle.net/dTQML/ – Esailija

+0

흥미 롭습니다. 위에서 찾은 코드 (복제본/제거/html 버전)는 실제로이 사이트에서 찾은 코드 였으므로 여러 사람들에게 잘 작동합니다. 사실, 저는 다른 사이트 몇 곳에서 사용했고 잘 작동했습니다. 심지어 더 어리석은 것은 어제 바로이 것이 완벽하게 작동하고 있다는 것입니다. 그러나 오늘은 그렇지 않습니다. 그래서 나는 무슨 일이 일어나는지 전혀 모른다. 어쨌든, 나는 그가 너를 언급하는 줄을 고치는 방법을 모른다. 그래서 그 점에 관해 나에게 약간의 추가 정보를 전달할 수 있다면, 나는 그것을 고맙게 생각할 것이다. – Shelly

+0

@Esailija 흥미 롭습니다. 결코 그것을 알지 못했고 그것은 문서에 없습니다. – Inkbug

관련 문제