Вызов функции JavaScript при загрузке div на частичной странице в MVC

#javascript #jquery #asp.net-mvc

#javascript #jquery #asp.net-mvc

Вопрос:

У меня есть частичная страница, на которую я загружаю элементы div. Я хочу вызывать функцию JavaScript при загрузке каждого div в моем частичном представлении.

 <p class="m-0" onload="markMessageAsDelivered('@item.isDelivered')">@item.Message</p>
  

Это функция, которая есть у меня в моем JS на моей странице razor.

 function markChatAsDelivered(isDelivered) {
            if (!isDelivered)
                alert('markChatAsDelivered');
        }
  

Эта функция не вызывается. Я также пытался поместить ее в Windows onload, но она по-прежнему не работает. Пожалуйста, дайте мне знать, что можно сделать?

Комментарии:

1. load Событие работает только с элементами document и img. Чтобы это сработало, было бы разумнее просто вызвать функцию при добавлении этого HTML-кода в DOM

Ответ №1:

Проблема, с которой я сталкивался с этими вещами, заключается в том, что onload вызывается раньше ASP.NET вносит свои изменения на страницу. Я использую два решения:

  1. $(document).ready() с помощью jQuery ожидает, пока DOM не будет полностью загружен и выполнен, чтобы вы могли перенести туда некоторый код.

  2. function pageLoad(sender, args) это встроенная функция ASP JS (как Page_Load в вашем коде ниже), которая вызывается, когда загрузка страницы завершена. Вы можете перенести некоторые JS сюда, как в первом ответе.

Лично мне, хотя я предпочитаю избегать библиотек, нравится первый вариант, потому что вы можете использовать более одной на страницу. Однако это действительно полезно, только если вы вызываете код на своей главной странице. Второй вариант хорош, если вы используете его только один раз на страницу, но, очевидно, если вы попытаетесь использовать его как на главной, так и на текущей странице, он не будет работать должным образом. Поэтому я бы рекомендовал jQuery, но если вы должны избегать этого, pageLoad тоже работает.