fancybox - 将'this'传递给onClosed函数

时间:2011-02-11 07:22:53

标签: jquery function fancybox

嗨,这很简单,但我似乎无法弄明白!

if( is_logged_out( html ) ) {
    var throughClick = $(this);
    $.fancybox( html, { 
        'autoDimensions' : false,
        'width' : 'auto', 
        'height' : 'auto', 
        'transitionIn' : 'none', 
        'transitionOut' : 'none',
        'hideOnOverlayClick' : false, 
        'showCloseButton' : false, 
        'onClosed' : 
        function( throughClick ) {
            alert(throughClick.attr('name'));
            throughClick.trigger('click');      
        }
    });
}else{

我想要做的就是传递被点击的按钮或链接的对象,因此一旦用户重新登录,它将再次处理。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

onClosed:function(){ 执行console.log(参数) }

会引导你到orig:P应该点击原始元素

参数[2] .orig.hide()会隐藏点击的链接

答案 1 :(得分:0)

您必须确保修复throughClick变量中的“任何按钮或链接”对象。这不一定由this变量完成。 this由调用函数填充,您并不总是控制它,尤其是在使用

或许,您最好告诉对象在单击时显式调用函数。通过枚举它们可以很容易地实现自动化:

var onclickables = $.map
     ( ["#clickme1","#clickme2"]
     , function( i, e ) { return $(i); } 
     );

var html="";// whatever you need it to be

$.each(onclickables)( function( index, item ) {
    item.click( function(e){
       your_new_function( html, item ); // <=== here you know the object
    });
});


function your_new_function( html, throughClick ) {
  if( is_logged_out( html ) ) {          
      $.fancybox( html, { 
          'autoDimensions' : false,
          'width' : 'auto', 
          'height' : 'auto', 
          'transitionIn' : 'none', 
          'transitionOut' : 'none',
          'hideOnOverlayClick' : false, 
          'showCloseButton' : false, 
          'onClosed' : 
          function( throughClick ) {
              alert(throughClick.attr('name'));
              throughClick.trigger('click');      
          }
      });

我也在jsfiddle中展示了这个想法。