1

요소의 데이터 속성을 기반으로 swfobject를 통해 Youtube 비디오를로드하는 비디오 갤러리를 만들었습니다. 그것은 IE를 제외한 모든 브라우저에서 아주 잘 작동합니다. 내가보고있는 이상한 행동은 말이되지 않습니다.JQuery .click() 이벤트, IE 8 및 9에서 매우 이상한 동작

다음과 같이 각 축소판에 대한 마크 업입니다

<li> 
    <div class="movie-image"> 
     <a class="" data-videotitle="Title" data-videoid="$node.contribution('video')" href="http://www.youtube.com/watch?v=41ZskpgQqZ4"> 
      <img class="video-link" data-videotitle="Title" data-videoid="41ZskpgQqZ4" src="http://img.youtube.com/vi/41ZskpgQqZ4/default.jpg" alt="Title"> 
      <h5>Title</h5> 
     </a> 
    </div> 
</li> 

이 자바 스크립트와 이벤트 바인딩 : 내가 어떤의 링크를 클릭 :

$('.video-link').click(function(){ 
    player.setVideo(this.getAttribute("data-videoid"), true); 
    player.setTitle(this.getAttribute("data-videotitle")); 
    window.event.returnValue = false; //IESUX 
    if(window.event.stopPropagation) window.event.stopPropagation(); 
    window.event.cancelBubble = true; 
    //Yes, there's a lot of redundancy here. None has worked. 
    return false; 
}) 
이제

는, 여기에 이상한 부분을 IE를 제외한 브라우저는 이벤트가 정상적으로 작동합니다.

그러나 IE에서 h5 요소를 클릭하면 모든 것이 정상적으로 작동합니다. 그러나 이미지를 클릭하면 브라우저가 미리보기 이미지로 이동합니다. 그게 링크의 대상조차 아니기 때문에 정말 이상합니다.

EDIT : 나는이 웹 페이지에서 JQuery 1.4.2를 사용하여 깜빡했다.

편집 2 : 음 ... 쓰레기. 방금 문제를 보여주기 위해 바이올린을 넣으려고 시도했지만, JQuery의 구 버전에서도 바이올린이 잘 작동합니다.

+1

코드와 마크 업을 보면 h5 요소를 클릭하면 모든 브라우저의 비디오로 이동해야합니다. 할 일이 있으면 미리보기 이미지로 이동해야합니다. –

+0

그게 이상한 이유 야. –

+0

이것은 약간 질책이지만 h5를 클릭하면 클릭 핸들러 내부에서 아무 것도 수행하지 않아야한다고 생각합니다. 또는 이벤트가 터지면 h5에 데이터 속성이 없기 때문에 오류가 발생해야합니다. 익명의 함수 안에있는'this'는 당신이 생각하는 것을 참조합니까? – NemesisX00

답변

3

jQuery를 이벤트 객체를 포함하고 그것에게 당신은 단지 더 잘하려고하는 일을 할 방법을 제공합니다 : 명시 적으로 밖으로 남아 return false

$(".video-link").click(function (e) { 
    player.setVideo(this.getAttribute("data-videoid"), true); 
    player.setTitle(this.getAttribute("data-videotitle")); 
    e.stopPropagation(); 
    e.preventDefault(); 
}); 

하는 것으로 - 당신이 그것을 필요하지 않습니다를.

제 생각 엔 IE에서 JS 실행을 중지하고 링크를 따라 잡는 오류가 발생하거나 기본 동작이 제대로 중지되지 않습니다.

+1

이상한 점은'return false'가 자동으로 stopPropagation과 preventDefault를 수행한다는 것입니다. hmm –

+1

방금 ​​편집 한 내용에서 알 수 있듯이 JQuery 1.4.2를 사용하여 막혔어요. 아마도 false를 돌려주는 것이 트릭을 수행하지 않는 이유일까요? 나는 이것을 잠시 후에 시험해보고 그것이 어떻게 진행되는지 알려줄 것이다. –

+0

@mcpDESIGNS 내가 제안하고있는 것은 오류로 인해 'return false'에 도달하지 못했지만 내 제안으로 문제가 해결되지 않는다고 생각합니다. 클릭 이벤트가 IE에서 전혀 트리거되는지 여부를 알고 있습니까? –