2015-01-12 3 views
0

앵커 요소에 첨부 된 단추가 있습니다. 앵커 안의 스팬을 클릭하면 이벤트가 의도 한대로 실행됩니다. 내가 가진 문제는 함수가 이벤트를 트리거 한 요소로 스팬을 사용하고 있다는 것입니다. 여기jquery onclick 하위 요소

<a href="" class="col-xs-4 text-center facebook-share" style="background-color:yellow" data-share="facebook" data-title="Check this out, yo" data-image="my-image" data-link="my-url" data-description="Nice, very nice" href="#"> 
    <span class="like">LIKE</span> 
    <span class="sep">/</span> 
    <span class="like-count count">0</span> 
</a> 

그리고 내가 사용 라이브러리에서 이벤트 처리기입니다 :이에서

events: function() { 

      var self = this; 

      this.element.on('click', 'a[data-share]', function(e) { 

       e.preventDefault(); 

       var $el = $(e.target); 

       switch ($el.data('share')) { 
        case 'facebook': self.facebook($el); break; 
        case 'twitter': self.twitter($el); break; 
        case 'googleplus': self.googleplus($el); break; 
       } 

       $el.blur(); 

      }); 

      if (this.options.facebook.appID) { 

       window.fbAsyncInit = function() { 
        FB.init({appId: self.options.facebook.appID, status: false}); 
       }; 

      } 

     } 

엘 다음 데이터가없는 것을 의미 스팬입니다 $ 여기 내 UI 코드입니다. 이벤트가 앵커까지 전파되어야합니까? 이런 일이 발생하도록하기 위해 무엇을 할 수 있습니까?

+0

앵커 태그에 고유 한 고유 ID를 사용하여 개별 태그로 분리하면 유지 관리가 훨씬 쉽고 쉬울 것입니다. – Khaltazar

답변

3

당신은 대상 (여기 a[data-share]) 이벤트가 등록 된 요소

또한 볼의 후손이 될 수 있기 때문에 e.target 대신 this를 사용해야 JQuery Event.target 당신은 너무 많은 일을하려고하는

+0

내가 여기로 돌아 오기 전에 약 1 분 만에 깨달았다. 버블 링 및 이벤트 처리기에 대한 jQuery에 대한 정보는 나에게 도움이되었습니다. 다행입니다. 자기 자신에게주의하고, 18 개월 동안 코드를 작성하지 마십시오! 이 간단한 것들을 너무 많이 잊어 버렸습니다! – lloydphillips