【问题标题】:How to write a function inside a declaration如何在声明中编写函数
【发布时间】:2012-04-18 13:43:17
【问题描述】:

我正在尝试让图像上的“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;
    }

【问题讨论】:

  • 尝试将替代文本分配给变量,然后使用它
  • @rutwikreddy 愚蠢的问题,但是有没有办法在“声明”中写入变量
  • 我认为你已经为这个问题减少了太多东西,因为从根本上说,如果你在元素存在后运行你的 jQuery 代码,你所拥有的应该可以工作。我当然看不到您如何获得您所描述的代码作为文本。您所描述的症状很奇怪。您能否发布一个更完整的示例,理想情况下是一个完全完整的独立示例? (就问题本身而言,jsbin.com 或 jsfiddle.net 以及 上的实时版本总是很好)。

标签: jquery fancybox


【解决方案1】:

试试:

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

【讨论】:

  • @ThiefMaster:确实,只是一种风格的东西;我更喜欢find 版本。 (注意$('img', this) 最终会在$.fn.init 函数的掩护下调用$(this).find('img')。)
  • @Jivings 没用。标题仍然是“function() { return $(this).find('img').attr('alt'); }”而不是“awesome text”。你的例子实际上是我自己写的第一件事,但没有让它正常工作。但是非常感谢您的回答
  • @Jivings:问题是,这与他的症状不符。他说“问题是标题显示的是“$(this).find('img').attr('alt')”而不是“Awesome text”,我做错了什么?”。如果你的答案是正确的,他应该什么也得不到,而不是"$(this).find('img').attr('alt')"。
【解决方案2】:

对于fancyBox v2 -

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

【讨论】:

  • 谢谢,我刚刚在制作 jfiddle 示例时找到了相同的解决方案。 :)
猜你喜欢
  • 2016-02-07
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多