我有以下fancybox代码:
$('.fancybox').fancybox({
'autoScale' : false,
'href' : $('.fancybox').attr('id'),
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
问题是我在页面上有20个不同的A标签id,我希望fancybox href属性获取被点击元素的id,即触发事件的id。
我尝试了几件事,但都没有效果!
'href' : $(this).attr('id'),
'href' : $(this.element).attr('id'),
这看起来很简单,但无论何时我插入'this'或类似的东西都无效。
答案 0 :(得分:30)
如果没有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
(设置{{1}会很奇怪否则)所以你可以这样做:
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>
参见 JSFIDDLE
答案 1 :(得分:4)
您可以遍历您的.fancybox
项目集合并获取ID。
$('.fancybox').each(function(){
$(this).fancybox({
'autoScale' : false,
'href' : $(this).attr('id'),
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
});
});
答案 2 :(得分:3)
试试这个:
$(".fancybox").click(function(){
var url = $(this).attr('id');
$.fancybox({
'autoScale' : false,
'href' : url ,
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
});
})
答案 3 :(得分:1)
试试这个
$('.fancybox').each( function() {
var elem = jQuery(this);
elem.fancybox({
'autoScale' : false,
'href' : elem.attr('id'),
'type':'iframe',
'padding' : 0,
'closeClick' : false,
});
}
);
答案 4 :(得分:1)
你试过这个吗?
$('.fancybox').each(function(){
$(this).fancybox({
'autoScale' : false,
'href' : this.id,
'type':'iframe',
'padding' : 0,
'closeClick' : false,
//some other callbacks etc
});
});