参数content
的值应该是获取内容的函数。我以为我可以使用这样的东西:
$(".fancy-detail-page").fancybox({
'content' : function(){
var id = $(this).attr('id');
id = id.replace("pd", "c");
var content = $('#' + id + ' .product-details').html();
return content;
},
'padding' : 0,
'openEffect' : 'none',
'closeEffect' : 'none',
'maxWidth' : 960
});
但是return
似乎不起作用。这是怎么做到的?
答案 0 :(得分:1)
感谢jqueryrocks和烤。这个解决方案对我有用:
$(".fancy-detail-page").click(function(e){
e.preventDefault();
var id = $(this).attr('id');
$.fancybox({
'content' : (function(){
id = id.replace("pd", "c");
var content = $('#' + id + ' .product-details').html();
return content;
})(),
'padding' : 0,
'openEffect' : 'none',
'closeEffect' : 'none',
'maxWidth' : 960
});
});
答案 1 :(得分:1)
如果没有太多复杂的事情,你可以使用beforeLoad
回调来获得相同的结果,它会更清晰,更简单,更快速:
$(".fancy-detail-page").fancybox({
padding: 0,
openEffect: 'none',
closeEffect: 'none',
maxWidth: 960,
beforeLoad : function () {
var id = $(this.element).attr("id").replace("pd", "c");
this.content = $('#' + id + ' .product-details').html();
}
});
<强> JSFIDDLE 强>
和这一行
this.content = $('#' + id + ' .product-details').html();
可以简化为
this.content = $('#' + id + ' .product-details');
无需.html()
即可获得相同的结果...请参阅
的 updated JSFIDDLE 强>
答案 2 :(得分:0)
假设这是相同的插件。
每个API看起来像'内容'必须是数据。
“内容强制内容(可以是任何HTML数据)” http://fancybox.net/api
所以你只需要在初始化fancybox之前调用函数(或设置内容var);
var id = $(this).attr('id');
id = id.replace("pd", "c");
var content = $('#' + id + ' .product-details').html();
$(".fancy-detail-page").fancybox({
'content' : content,
'padding' : 0,
'openEffect' : 'none',
'closeEffect' : 'none',
'maxWidth' : 960
});