我正在尝试为我的fancybox(1.3.4)设置一个onClosed函数,但遇到了很多麻烦。 fancybox'href':paramater正常工作,但'onClosed'函数返回undefined。我是Jquery的新手。我想念的是什么?
$(".clickable-row").click(function() {
$.fancybox({
'href': $(this).attr('data-href'),
'padding' : '20px',
'width' : 950,
'overlayOpacity' : '0.4',
'overlayColor' : '#000',
'hideOnContentClick' : false,
'autoScale' : true,
'transitionIn' : 'fade',
'transitionOut' : 'fade',
'speedIn' : '300',
'speedOut' : '300',
'type' : 'iframe',
'onClosed' : function() {
alert ( $(this).attr('data-href') );
}
});
出于调试目的,我尝试使用alert函数来查看onClosed函数的输出。我的最终目标是将当前窗口的位置更改为“.clickable-row”中单独定义的URL。
用以下内容替换警报:
window.location.replace( $(this).attr('data-href2') );
HTML
<tr class='clickable-row' data-href='link1.asp' data-href2='link2.asp'>
答案 0 :(得分:2)
这是一个简单的变量范围问题。您的关闭事件处理程序中的this
与您的点击处理程序中的this
不同。在点击处理程序中使用局部变量来&#34;保存&#34; this
然后在关闭处理程序中使用此变量。
(".clickable-row").click(function() {
var self = $(this);
$.fancybox({
'href': $(this).attr('data-href'),
'padding' : '20px',
'width' : 950,
'overlayOpacity' : '0.4',
'overlayColor' : '#000',
'hideOnContentClick' : false,
'autoScale' : true,
'transitionIn' : 'fade',
'transitionOut' : 'fade',
'speedIn' : '300',
'speedOut' : '300',
'type' : 'iframe',
'onClosed' : function() {
alert (self.attr('data-href') );
}
});