2012-04-18 51 views
4

我想使用時獲得的圖像上常用的「alt」屬性的文本顯示爲標題的fancybox如何寫一個聲明中的函數

HTML

<a href='inlinePicture'........ 
    <img alt='Awesome text'...... 
</a 

JQUERY

$('.inlinePicture').facybox({ 
    title: $(this).find('img').attr('alt') 
}); 

問題是標題顯示「$(this).find('img')。attr('alt')」而不是「Awesome text」,我做錯了什麼?

我也試過:

$('.inlinePicture').facybox({ 
    titleFormat: function (title) { 
     return $(this.orig).siblings('p').text() || title; 
    } 
+0

嘗試alt文本分配給一個變量,然後用它 – TRR 2012-04-18 13:46:45

+0

@rutwikreddy愚蠢的問題,但是有沒有辦法在「聲明」內寫入變量 – Plexus81 2012-04-18 13:53:29

+1

我想你已經pa對於這個問題,紅色的東西太多了,因爲從根本上來說,你在那裏有什麼應該工作,只要你在元素存在之後運行你的jQuery代碼。我當然不能看到你如何描述代碼*作爲文本*。你描述的症狀很奇怪。你可以發佈一個更完整的例子,理想情況下是一個完全獨立的例子嗎? (在問題本身,但在http://jsbin.com或http://jsfiddle.net *上的實時版本*以及總是很好)。 – 2012-04-18 13:53:30

回答

2

有關的fancybox V2 -

$(".fancybox").fancybox({ 
    beforeLoad : function() { 
     this.title = $(this.element).find('img').attr('alt'); 
    } 
}); 
+0

謝謝,我只是在製作jfiddle示例時找到了相同的解決方案。 :) – Plexus81 2012-04-18 14:16:09

4

嘗試:

$('.inlinePicture').facybox({ 
    title: function() { 
     return $(this).find('img').attr('alt'); 
    } 
}); 
+1

'$('img',this)'是更好的恕我直言,但這可能只是個人喜好... – ThiefMaster 2012-04-18 13:46:24

+0

@ThiefMaster:的確,只是一種風格的東西;我更喜歡'find'版本。 (並且請注意'$('img',this)'最終會在'$ .fn.init'函數的封面下調用'$(this).find('img')'。 – 2012-04-18 13:49:58

+0

@Jivings它沒有不行。標題仍然會得到「function(){return $(this).find('img')。attr('alt');}」而不是「真棒文本」。你的例子實際上是我自己寫的第一件事,但沒有管理它正常工作。但是,非常感謝答案 – Plexus81 2012-04-18 13:52:16