2011-02-11 112 views
1

嗨,這很簡單,但我不知道該如何解決!fancybox - 將'this'傳遞給onClosed函數

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{ 

所有我想要做的是通過哪個按鈕或鏈接被點擊的對象,所以一旦用戶重新登錄,將再次處理。

任何幫助,非常感謝。

回答

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也展示了這個想法。

+0

感謝您的輸入。這個問題不在於$(this)。回到我原來的帖子,用`var throughClick ='foobar'`替換`var throughClick = $(this);`然後嘗試通過fancybox回顯**,問題仍然存在。 – 2011-02-11 09:27:04

1

onClosed:函數(){ 的console.log(參數) }

會導致你原稿:P應該具有原始元件點擊

參數[2] .orig.hide( )會隱藏點擊的鏈接