Я уверен, что это еще один DOH! facepalm вопросы, но как дизайнер, а не программист Мне нужна помощь, чтобы понять это правильно.вызов внешнего скрипта и .load конфликт jquery
У меня есть индексный файл, вызывающий локальные файлы .html через jQuery .load. Так же, как это: (некоторые вкладки функциональности не родственница здесь - таким образом, ссылка целевого вызова)
<a href="#lightbox">Lightbox</a></li>
<div id=lightbox">
<div class="load">
<script type="text/javascript">
$('.load').load('examples/lightbox.html');
</script>
</div>
</div>
У меня также есть файл внешних .js, который имеет кучу функций, которые обрабатывают некоторые лайтбоксы среди других вещей. Стандартный <script src="js/typography.js" type="text/javascript"></script>
Который содержит:
$(document).ready(function(){
$(".open-lightbox").on("click", function(){
$('.lightbox').css('display','block');
});
$('.close-lightbox').click(function(){
$('.lightbox').css('display','none');
});
});
Моя проблема заключается в том, что если внешне называется .html файл имеет какие-либо элементы, зависящие от .js файл т.е.. всплывающее окно лайтбокса не работает.
что-то вроде:
<a href="#" class="open-lightbox">LightBox Link</a>
<div class="lightbox">
lightbox content
<a href="#" class="close-lightbox">Close</a>
</div>
Если я переместить HTML-код прямо на странице индекса вместо .load
, не проблема, если же я переместил JS как инлайн <script>...</script>
, а не называть его extrenally. Прекрасно работает в обоих случаях.
Мое spidey sense говорит мне, что это имеет какое-то отношение к моей функции и .load
не выполняется в том порядке, в котором они мне нужны, но мои навыки копирования/вставки javascript только заходят так далеко.
Может ли кто-нибудь сказать мне, могу ли я сделать эту комбинацию? Я бы очень признателен.
EDIT
Может быть, я объяснил мой сам плохо так что позвольте мне попробовать и опубликовать лучший пример. Если мой индексный код соблюден, все работает: мой лайтбокс открывается, как и предполагалось.
<li><a href="#thistabid">Link to open Tab Content</a></li>
<div id="thistabid">
<--Tab Content below-->
<div class="somehtmlpage-load">
<a href="#" class="open-lightbox">LightBox Link</a>
<div class="lightbox">
lightbox content
<a href="#" class="close-lightbox">Close</a>
</div>
</div>
<--End Tab Content-->
</div>
При нажатии этой вкладки появляется содержимое внутри «thistabid». Каким бы ни был этот контент.
Теперь, если я делаю:
<li><a href="#thistabid">Link to open Tab Content</a></li>
<div id="thistabid">
<--Tab Content below-->
<div class="somehtmlpage-load">
<script type="text/javascript">
$('.somehtmlpage-load').load('examples/lightbox.html');
</script>
</div>
<--End Tab Content-->
</div>
Лайтбокс не работает. Содержание lightbox.html является
<a href="#" class="open-lightbox">LightBox Link</a>
<div class="lightbox">
lightbox content
<a href="#" class="close-lightbox">Close</a>
</div>
же, как HTML в 1-ом примере, где все работает. Единственная разница в том, что он загружается jQuery, а не жестко закодирован.
Что я имею в виду под «если у внешнего файла .html есть какие-либо элементы, зависящие от файла .js, т. Е. Всплывающее окно лайтбокса» заключается в том, что если html является частью внешнего файла, тогда функция лайтбокса не является за работой. Если он жестко закодирован, он появляется, как и предполагалось.
На 1-й взгляд .он кажется, должно быть решение, но наиболее likley моя реализация этого является от марки:/
Да, я попробовал .on, но не помог решить мою проблему. Я даже пробовал наследие. Live с jQuery 1.7, но это не сработало. Возможно, я не делал этого правильно, но я внимательно следил за документацией API. –
Я добавил образец кода, это то, что вы сделали? – Christophe
Не совсем, если вы посмотрите на мою функцию лайтбокса, у меня уже есть .on. классы .load div не имеют ничего общего с лайтбокс. Это просто загрузить контент из интерфейса с вкладками. Проблема возникает только в том случае, если lighbox является частью загруженного содержимого. –