$ (документ) .ready () и частичная загрузка представления

Я разрабатываю приложение с помощью Asp.net mvc и jQuery. Я хотел бы использовать то же соглашение о присвоении имен (классы и идентификаторы) для элементов HTML в различных взглядах.

В случае, если, когда я хочу загрузить частичное представление асинхронно, $ (документ) .ready () часть кода в основном представлении теряет свою полноценность, потому что ни один из тегов HTML частичного представления и именования CSS не распознан jQuery. Я, конечно, не хочу писать тот же код для каждого представления. Что такое th ebest способ решить эту проблему?

6
задан xantrus 10 April 2010 в 18:35
поделиться

2 ответа

Для этого можно использовать .live () , например:

$(".myClass").click(function() { });

Становится следующим:

$(".myClass").live('click', function() { });

.live () работает по-другому. .click () привязывается к элементам, с которыми селектор совпал при запуске , обычно document.ready . .live () работает, живя в корне DOM, ожидая всплытия событий и выполняя обработчик, если событие, которое является целью пузыря, совпадает с селектором.

9
ответ дан 10 December 2019 в 02:44
поделиться

Лично я просто загружаю весь контент, используя свои собственные оболочки вокруг $ .post, и инициализирую там контент по мере необходимости. Это также помогает унифицировать обработку ошибок, ожидающих уведомлений и т. Д.

Сторонние библиотеки обычно также предоставляют способ предварительной обработки содержимого, загруженного с помощью ajax.

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

Другой способ, который я использую, - это настраиваемые теги HTML в формах. Например.

<form custom-setup="MyCustomSetupFunc">

и мой обработчик $ .post проверит наличие этого тега и вызовет эту функцию, передав экземпляр формы. Это помогает сузить область действия скрипта при загрузке партиала (полезно, когда на одной странице могут быть загружены несколько экземпляров партиала).

0
ответ дан 10 December 2019 в 02:44
поделиться
Другие вопросы по тегам:

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