2013-08-29 3 views
1

팬시 박스의 내 Facebook 공유자가 이미지의 alt를 잡고 링크 제목으로 지정하고 싶습니다.성공에서 한 걸음 ... javascript alt

아래 코드에서 "정의되지 않은"제목이 표시되고 나머지는 문제가 없습니다.

무엇이 문제입니까? 그러나 그들은 여전히 ​​Fancybox을 통해 탐색 할 수 있으며,

<a class="fancybox" title="Title displayed under image" alt="alttext" href="Link to big image" rel="group"><img alt="alttext" src="Thumb" /></a> 


<div class="hidden"> 
<a class="fancybox" title="Title displayed under image" alt="alttext" href="Link to big image" rel="group"><img alt="alttext" src="Thumb" /></a> 
<a class="fancybox" title="Title displayed under image" alt="alttext" href="Link to big image" rel="group"><img alt="alttext" src="Thumb" /></a> 
<a class="fancybox" title="Title displayed under image" alt="alttext" href="Link to big image" rel="group"><img alt="alttext" src="Thumb" /></a> 
<a class="fancybox" title="Title displayed under image" alt="alttext" href="Link to big image" rel="group"><img alt="alttext" src="Thumb" /></a> 
</div> 

기본적으로 숨겨진 클래스는 상단에 하나를 제외한 모든 이미지를 숨기는 데 사용된다

$(".fancybox").fancybox({ 
    beforeShow : function() { 
     var alt = this.element.find('img').attr('alt'); 

     this.inner.find('img').attr('alt', alt); 

     this.title = alt; 
    } 
}); 

$(".fancybox") 
    .attr('rel', 'gallery') 
    .fancybox({ 
     beforeShow: function() { 
      if (this.title) { 
       // New line 
       this.title += '<br />'; 

       // Add tweet button 
       this.title += '<a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="' + this.href + '">Tweet</a> '; 

       // Add FaceBook like button 
       this.title += '<a href="https://www.facebook.com/sharer/sharer.php?s=100&p[url]=' + this.href + '&p[title]=' + this.alt + '&p[images][0]=' + this.href + '&p[summary]=My website summary">Facebook</a> ;' 
      } 
     }, 
     afterShow: function() { 
      // Render tweet button 
      twttr.widgets.load(); 
     }, 
     helpers : { 
      title : { 
       type: 'inside' 
      } 
     } 
    }); 

이미지에 대한 코드입니다.


ANOTHER 편집 : - 내가 경고를 떠날 경우, 적절한 제목으로 팝업

가 나는

어떻게됩니까
<div class="fancybox"><a class="fancybox" title="Title displayed under image" alt="alttext" href="Link to big image" rel="group"><img alt="alttext" src="Thumb" /></a></div> 

테스트하기 위해 첫 번째 이미지를 통해 사업부를 추가 한 . 그러나 이미지를 클릭하면 사진 만 소셜 버튼없이 표시됩니다.

+0

fancybox를 두 번 초기화하면 마지막 호출 만 고려되므로 첫 번째 호출에서 사용하는 모든 API 옵션은 두 번째 호출에서 재정의됩니다. 그리고 그런데'class = "fancybox"를 부모 컨테이너가 아닌 앵커 태그에 설정하기 만하면됩니다. – JFK

답변

0

이미지의 alt 속성은 Fancybox 내부에서 사용할 수 없으며 fancybox.js를 적용하지 않고 전달할 수 없습니다. 따라서 beforeShow()으로 두 번째 전화를 걸어 this.alt을 입력하면 undefined이 반환됩니다.

원하는 문자열을 Facebook 링크에 전달하려면 다른 방법을 사용해야합니다. - 그것은 거기에 대한 이유가

if (this.title) { 

      // pass original title to new variable 
      var originalTitle = this.title;   

      // New line 
      this.title += '&lt;br /&gt;'; 

      // Add tweet button 
      this.title += '<a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="' + this.href + '">Tweet</a> '; 

      // Add FaceBook like button ## using originalTitle 
      this.title += '<a href="https://www.facebook.com/sharer/sharer.php?s=100&p[url]=' + this.href + '&p[title]=' + originalTitle + '&p[images][0]=' + this.href + '&p[summary]=My website summary">Facebook</a> ;' 
     } 

alt 속성은 앵커 태그에서 허용되지 않습니다 : 대체 텍스트가 어떻게 같은 일을하고 약, 제목 텍스트 같은 경우?

+0

감사합니다! 이것은 완벽하게 작동하는 것처럼 보이지만 한 가지 문제가 있습니다. –

+0

문제를 공유하십시오.나는 팬시 박스와도 약간의 고통을 겪어왔다. :) – bobs12

+0

잠깐 동안 그만두고 코멘트 편집을 마칠 수 없었다. 기본 Facebook 공유기 팝업을 열려면이 코드를 어떻게 만들 수 있습니까? 이 순간에 공유자는 같은 창에서 열립니다. 목표 _blank를 추가하면 공유기가 새 탭/창에서 전체 화면으로 열립니다. 이 두 가지 옵션 모두 안티 사용성입니다. 나는 window.open로 시도했지만 성공적으로 실패했다. –

0

이것은 http://api.jquery.com/element-selector/의 오용 일 수 있습니다.

태그가 .fancybox 클래스가있는 요소의 하위 (n 번째 수준)이고 해당 태그의 'alt'특성을 얻으려는 경우 요소 명령을 생략 해보십시오. 여기

var alt = $(this).find('img').attr('alt'); 

은 예입니다

http://jsfiddle.net/benashby/avGk6/

주 : 이후 인 IMG가 fancybox의 DIV의 1 수준의 아이 인 경우, 그것은 http://api.jquery.com/children/를 사용하는 cliet에 쉬울 것 명령 또는 그것의 일부 파생.

+0

감사합니다. JSfiddle에서 작동합니다. 내 웹 사이트에서이 코드를 사용해 보았습니다. 올바르게 수정되었습니다. 나는 경보 선을 삭제했다 - sharer는 아직도 alt를 얻지 않는다. 주요 질문을 편집하여 더 많은 코드를 볼 수 있습니다. –