fancybox - передача 'this' в функцию onClosed - PullRequest
1 голос
/ 11 февраля 2011

Привет, это, наверное, действительно просто, но я, кажется, не могу понять это!

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 ]

1 голос
/ 09 марта 2011

onClosed: function () { console.log (аргументы) }

приведет вас к orig: P, в котором должен быть нажат элемент оригинала

arguments [2] .orig.hide () будет скрывать нажатую ссылку

0 голосов
/ 11 февраля 2011

Необходимо убедиться, что вы исправили объект «какая кнопка или ссылка» в переменной 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 .

...