我有以下的fancybox代码:
$('.fancybox').fancybox({
'autoScale' : false,
'href' : $('.fancybox').attr('id'),
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
问题是我在网页上有二十个不同的标签ID的,我想的fancybox href属性取单击元素的ID,即触发事件的一个。
我已经试过几件事情,他们都没有工作!
'href' : $(this).attr('id'),
'href' : $(this.element).attr('id'),
这看起来很简单,但只要我插上“这个”或类似的没有什么作品。
如果没有each()
或click()
仅仅是添加beforeLoad
回调到你这样的脚本
$(".fancybox").fancybox({
autoScale: false,
// href : $('.fancybox').attr('id'), // don't need this
type: 'iframe',
padding: 0,
closeClick: false,
// other options
beforeLoad: function () {
var url = $(this.element).attr("id");
this.href = url
}
}); // fancybox
注 :这是对的fancybox v2.0.6 +
在另一方面,更优雅的解决方案是使用(HTML5) data-*
属性设置href
(它看起来怪异的设置id="images/01.jpg"
其他方式),你可以这样做:
<a href="#" id="id01" data-href="images/01.jpg" ...
和您的回调
beforeLoad: function(){
var url= $(this.element).data("href");
this.href = url
}
并使用id
什么是为属性。
编辑 :最好是使用特殊data-fancybox-href
属性在你的锚一样:
<a id="item01" data-fancybox-href="http://jsfiddle.net" class="fancybox" rel="gallery" href="javascript:;">jsfiddle</a>
并使用一个简单的脚本,而不喜欢回调
$(".fancybox").fancybox({
// API options
autoScale: false,
type: 'iframe',
padding: 0,
closeClick: false
});
见的jsfiddle
可以遍历您的收藏.fancybox
项目,抢ID。
$('.fancybox').each(function(){
$(this).fancybox({
'autoScale' : false,
'href' : $(this).attr('id'),
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
});
});
试试这个:
$(".fancybox").click(function(){
var url = $(this).attr('id');
$.fancybox({
'autoScale' : false,
'href' : url ,
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
});
})
试试这个
$('.fancybox').each( function() {
var elem = jQuery(this);
elem.fancybox({
'autoScale' : false,
'href' : elem.attr('id'),
'type':'iframe',
'padding' : 0,
'closeClick' : false,
});
}
);
您是否尝试过这个?
$('.fancybox').each(function(){
$(this).fancybox({
'autoScale' : false,
'href' : this.id,
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
});
});