Вызывать функцию через определенное время? - PullRequest
14 голосов
/ 10 октября 2011

Я изучаю JS-файл формы Брэма Джеттена:

Notification.fn = Notification.prototype;

function Notification(value, type, tag) {
  this.log(value, type);
  this.element = $('<li><span class="image '+ type +'"></span>' + value + '</li>');
  if(typeof tag !== "undefined") {
    $(this.element).append('<span class="tag">' + tag + '</span>');
  }
  $("#notifications").append(this.element);
  this.show();
}

/**
 * Show notification
 */
Notification.fn.show = function() {
  $(this.element).slideDown(200);
  $(this.element).click(this.hide);
}

/**
 * Hide notification
 */
Notification.fn.hide = function() {  
  $(this).animate({opacity: .01}, 200, function() {
    $(this).slideUp(200, function() {
      $(this).remove();
    });
  });
}

...

Я назначил событие нажатия одной из моих кнопок, и когда я нажимаю эту кнопку, оно вызывает новое уведомление:

new Notification('Hi', 'success');

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

Ответы [ 4 ]

31 голосов
/ 11 октября 2011
var that = this;

setTimeout(function() {   //calls click event after a certain time
   that.element.click();
}, 10000);

, который работал для меня.

2 голосов
/ 10 октября 2011

Установить тайм-аут и принудительно скрыть.

/**
 * Show notification
 */
Notification.fn.show = function() {
  var self = this;
  $(self.element).slideDown(200)
                 .click(self.hide);

  setTimeout(function() {
    self.hide();
    // 3000 for 3 seconds
  }, 3000)
}
1 голос
/ 10 октября 2011

Изменить строки на

Notification.fn.show = function() {
    var self=this;
    $(this.element).slideDown(200);
    $(this.element).click(this.hide);
    setTimeout(function(){
        self.hide();
    },2000);
}

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

Notification.fn.hide = function() {
  if (!this.isHidden){  
    var self=this;
    $(this).animate({opacity: .01}, 200, function() {
      $(this).slideUp(200, function() {
        $(this).remove();
        self.isHidden=true;
      });
    });
  }
}
0 голосов
/ 21 сентября 2017

звонки click event через определенное время

setTimeout(function() {   //calls click event after a certain time
      $(".signature-container .nf-field-element").append( $('#signature-pad')); 
}, 10000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...