событие jQuery для инициирования действия, когда отделение сделано видимым

Выезд strptime в время модуль. Это - инверсия strftime.

$ python
>>> import time
>>> time.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
                 tm_hour=13, tm_min=33, tm_sec=0,
                 tm_wday=2, tm_yday=152, tm_isdst=-1)

303
задан frankadelic 3 August 2009 в 12:24
поделиться

3 ответа

Вы всегда можете добавить к исходному методу .show () , поэтому вам не нужно запускать события каждый раз, когда вы что-то показываете или если вам это нужно для работы с устаревшим кодом:

Расширение JQuery:

jQuery(function($) {

  var _oldShow = $.fn.show;

  $.fn.show = function(speed, oldCallback) {
    return $(this).each(function() {
      var obj         = $(this),
          newCallback = function() {
            if ($.isFunction(oldCallback)) {
              oldCallback.apply(obj);
            }
            obj.trigger('afterShow');
          };

      // you can trigger a before show if you want
      obj.trigger('beforeShow');

      // now use the old function to show the element passing the new callback
      _oldShow.apply(obj, [speed, newCallback]);
    });
  }
});

Пример использования :

jQuery(function($) {
  $('#test')
    .bind('beforeShow', function() {
      alert('beforeShow');
    }) 
    .bind('afterShow', function() {
      alert('afterShow');
    })
    .show(1000, function() {
      alert('in show callback');
    })
    .show();
});

Это эффективно позволяет вам делать что-то beforeShow и afterShow, сохраняя нормальное поведение исходного метода .show ().

Вы также можете создать другой метод, чтобы вам не приходилось переопределять исходный .show ( ) метод.

187
ответ дан 23 November 2019 в 01:23
поделиться

Нет собственного события, к которому вы могли бы подключиться для этого, однако вы можете инициировать событие из своего скрипта после того, как сделаете div видимым с помощью функции. trigger

например

//declare event to run when div is visible
function isVisible(){
   //do something

}

//hookup the event
$('#someDivId').bind('isVisible', isVisible);

//show div and trigger custom event in callback when div is visible
$('#someDivId').show('slow', function(){
    $(this).trigger('isVisible');
});
73
ответ дан 23 November 2019 в 01:23
поделиться

Решение красного квадрата - правильный ответ.

Но в качестве решения В ТЕОРИИ вы можете написать функцию, которая выбирает элементы, классифицируемые как .visibilityCheck ( не все видимые элементы ) и проверять значение их свойства видимость ; если истина , то сделайте что-нибудь.

После этого функцию следует периодически выполнять с помощью функции setInterval () . Вы можете остановить таймер с помощью clearInterval () после успешного вызова.

Вот пример:

function foo() {
    $('.visibilityCheck').each(function() {
        if ($(this).is(':visible')){
            // do something
        }
    });
}

window.setInterval(foo, 100);

Вы также можете улучшить его производительность, однако решение в основном абсурдно. использоваться в действии. Итак ...

20
ответ дан 23 November 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: