2011-02-11 2 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

입력 해 주셔서 감사합니다. 문제는 $ (이)와 관련이 없습니다. 내 원래의 게시물로 돌아가서'var throughClick = $ (this);을'var throughClick = 'foobar'로 대체 한 다음 ** fancybox를 통해 ** 에코를 시도하면 문제가 남아 있습니다. –

1

onClosed : 함수() { 을 console.log (인수) }

원본보다 실적이 당신을 이끌 것입니다 : P 것은합니다 (망하는 요소가

인수 [2] .orig.hide

을 클릭해야 그) 클릭 한 링크를 숨길 수 있습니다

관련 문제