#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я загружаю содержимое .html с помощью jquery .load(), но javascript и css не применяются к one.html/two.html после того, как оно загружено функцией .load().
Пример ниже:
<head>
<style> styles1 </style>
<link href="stylesheets/style2.css" rel="stylesheet">
<script src="script1.js">
<script>
$(document).ready(function(){
$("button.os").click(function(){
fillmein = $(this).attr("target");
fillmeinfile = $(this).attr("target") '.html';
$("." fillmein).load("/contentfolder/" fillmeinfile);
});
});
...
other scripts
...
</script>
</head>
<body>
<p>the css and any js is applied to this block</p>
<button class="os" target="one">replace</button>
<div class="one">I will be replaced by one.html</div>
<button class="os" target="two">replace</button>
<div class="two">I will be replaced by two.html</div>
</body>
Я понимаю, что one.html/two.html загружается после того, как стили и javascript загружаются браузером, но как я получаю стили и javascript, которые есть в <head>
, для применения к вновь загруженному one.html/two.html ?
Я новичок в jQuery, поэтому дайте мне знать, как я могу уточнить, если это необходимо. Спасибо!
ОТРЕДАКТИРОВАНО Спасибо всем за предоставленные ответы! Обновил пример кода, чтобы прояснить, что я имел в виду.
копирование <style>
и <script>
в one.html и two.html работает, но если я загружу javascript дважды, это может привести к конфликту. например, наличие логики, которая выполняет поиск в $(document), и функций, которые сворачивают и разворачивают раздел, может вызываться несколько раз. Возможно ли, чтобы js и css, которые были загружены на главной странице, работали с недавно загруженными файлами .html или есть какой-либо чистый и ПОНЯТНЫЙ способ сделать это?
Комментарии:
1. каково содержимое content.html
2. смотрите plnkr.co/edit/7bYF2ynE92X0as6lsqCh?p=preview
3. можете ли вы также опубликовать свой код на js и css?
4. спасибо arun, это работает, но возникли проблемы, когда несколько сценариев были скопированы из загруженных html-файлов, что вызвало проблемы / конфликт со сценариями в исходном основном HTML-файле. я обновил свой вопрос. Спасибо!
5. Что касается сохранения его в чистоте — вы могли бы заставить Javascript применяться только к определенным объектам вместо использования
$(document)
селектора, вы также могли бы установить какой-нибудь файл COOKIE или переменную сеанса на стороне сервера, чтобы указать, что вы не хотите запускать определенный скрипт, потому что он уже был запущен… Локальное хранилище — еще лучший способ… Я думаю, вы можете проверить, существует ли функция уже в условном операторе
Ответ №1:
Как предложил Arun P Johny в своем комментарии
Вы просто вставляете свой CSS-код в целевой документ, и он будет автоматически загружен вместе с содержимым.
Ответ №2:
Вы можете написать
$('button').on('click','Classname',function(){
//write your structure here
})
Это будет работать для всех тегов с 'Classname'
, которые уже присутствуют или динамически добавлены позже.