2016-07-01 2 views
-2

e.preventDefault();를 추가하려고합니다. 태그를 클릭하면 아래 코드는 작동하지만 작동하지 않습니다. 누군가 제게 조언 해주세요. 고맙습니다.e.preventDefault() in Javascript 프로토 타입 모듈 패턴

(function($){ 
    'use strict'; 
    var ItemPhoto = function(){ 
     this.$el = undefined; 
     this.getElements(); 
     this.events(); 
    } 
    ItemPhoto.prototype = { 
     getElements: function(){ 
      this.$el = $('#contaner').find('.image'); 
      this.$item = $('#contaner').find('.item').find('a'); 
     }, 
     events: function(){ 
      this.$item.on('click', {_self:this}, this.swapImage()); 
     }, 
     swapImage: function(e){ 
      e.preventDefault(); 
      var _self = e.data._self; 
      _self.$el.attr('src', _self.$item.attr('href')); 
     } 
    } 
    var itemPhoto = new ItemPhoto(); 
})(jQuery); 
+2

'()'덕택에'swapImage'를 이벤트 핸들러에 바인딩하는 것이 아니라 호출하고 있습니다. – ssube

+0

좋아, 내가 언급 한 줄을 편집했지만 여전히 작동하지 않습니다. – shinyatk

+1

[귀하의 편집으로 인해 문제가 해결되었습니다.] (https://jsfiddle.net/rx96ma6d/). 그래서 롤백하고 복제본으로 닫습니다. – Oriol

답변

1

코드가 정상적으로 작동하는 것 같습니다. jquery가로드되고 DOM이로드 될 때까지 함수가 대기하는지 확인하십시오.

+0

나는 닫아야 할 질문에 묘사 된 문제를 재현 할 수 없으며 (평판이 충분하지 않은 경우 깃발을 던져서) 투표를 닫아야합니다. 임의 추측으로 답변을 게시하지 마십시오. – Oriol

+0

감사합니다. jQuery와 DOM 로딩에 대해 살펴 보겠다. – shinyatk

관련 문제