переписать метод show в jquery - PullRequest
0 голосов
/ 06 апреля 2020

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

, проблема в том, что этот модальный режим находится в по всему приложению и множеству jquery .show методов, которые я должен отслеживать и добавлять этот звук

 $('#ajax_alert').show();

Я пытался прослушать изменение, например изменение атрибутов css, но не сработало

$('#ajax_alert').on("change",function(){
//make sound
})

как мне перезаписать метод show? я могу вызвать звук внутри него, проверив, является ли запущенный идентификатор ajax_alert, проиграйте этот звук!

1 Ответ

1 голос
/ 06 апреля 2020

Я согласен с комментариями, что это, вероятно, не самая лучшая идея, и это кажется немного глупым, но это можно сделать.

Так, что метод JQuery .show() это просто изменить элемент CSS на display: block; правильно? Таким образом, вы можете перезаписать метод .show, но попросите его продолжать делать это, а затем добавьте некоторые дополнительные функции:

jQuery.fn.show = function() {
   this.css('display', 'block');
   setTimeout(() => alert('My very own added functionality'), 0);
   return this;
};

$('a').click(function() {
   $('div').show()
})
div {margin-top: 20px; background-color: blue; height: 60px; width: 60px; display: none;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#">Click to show div</a>
<div></div>

Рабочая JSFiddle здесь :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...