Несколько popup окон
Здравствуйте!
задача на 1 странице показывать несколько окон с уникальным id. нашел интересный код, но он почему-то не работает в теле выводится ссылка с присвоемнием id классу <a class="popup-link-<?php echo $paru2['id']; ?>" href=#>Написать сообщение</a><br> как мне надо изменить первые две строки в функции, чтобы открывались окна с соответствующими id?? иначе открывается только окно id = 1 (popup-box-1)
$(document).ready(function() {
//$('body').append('<div class="popup-box" id="popup-box-1"><div class="close">X</div><div class="top"><h2></h2></div><div class="bottom">er</div></div>');
//$('body').append('<div id="blackout"></div>');
var boxWidth = 400;
function centerBox() {
/* Preliminary information */
var winWidth = $(window).width();
var winHeight = $(document).height();
var scrollPos = $(window).scrollTop();
/* auto scroll bug */
/* Calculate positions */
var disWidth = (winWidth - boxWidth) / 2
var disHeight = scrollPos + 150;
/* Move stuff about */
$('.popup-box').css({'width' : boxWidth+'px', 'left' : disWidth+'px', 'top' : disHeight+'px'});
$('#blackout').css({'width' : winWidth+'px', 'height' : winHeight+'px'});
return false;
}
$(window).resize(centerBox);
$(window).scroll(centerBox);
centerBox();
$('[class*=popup-link]').click(function(e) {
/* Prevent default actions */
e.preventDefault();
e.stopPropagation();
/* Get the id (the number appended to the end of the classes) */
var name = $(this).attr('class');
var href = $(this).attr('href');
var id = name[name.length - 0];
var scrollPos = $(window).scrollTop();
/* Show the correct popup box, show the blackout and disable scrolling */
/*$("#popup-box-"+id+" div.bottom").load(href);*/
$('#popup-box-'+id).show();
$('#blackout').show();
$('html,body').css('overflow', 'hidden');
/* Fixes a bug in Firefox */
$('html').scrollTop(scrollPos);
});
$('[class*=popup-box]').click(function(e) {
/* Stop the link working normally on click if it's linked to a popup */
e.stopPropagation();
});
$('html').click(function() {
var scrollPos = $(window).scrollTop();
/* Hide the popup and blackout when clicking outside the popup */
$('[id^=popup-box-]').hide();
$('#blackout').hide();
$("html,body").css("overflow","auto");
$('html').scrollTop(scrollPos);
});
$('.close').click(function() {
var scrollPos = $(window).scrollTop();
/* Similarly, hide the popup and blackout when the user clicks close */
$('[id^=popup-box-]').hide();
$('#blackout').hide();
$("html,body").css("overflow","auto");
$('html').scrollTop(scrollPos);
});
});
|
По-моему, в 43й строчке 0 надо заменить на 1
var id = name[name.length - 1]; Оформите код в песочнице, без разметки остается только гадать |
Да это явная ошибка, но все равно не работает, даже с этим изменением.
http://learn.javascript.ru/play/dCRaic оформил, но там нужна завяка на БД не знаю как это сделать |
ну, как и предполагал. Замените 0 на 1 и все заработает (до 9ти попапов, само собой)
http://learn.javascript.ru/play/4OeRfc |
|
Цитата:
Добавляйте дивы с этими айди в разметку. Что еще надо-то? http://learn.javascript.ru/play/OfM4dc Вы же не думаете, что я буду за вас выдумывать стили для попапов? |
нет конечно
просто обе ссылки <a class="popup-link-14" href=#>Написать сообщение 14</a><br> <a class="popup-link-24" href=#>Написать сообщение 24</a><br> выводят popup-box-4 ))))) |
и собственно вопрос то у меня был вот еще какой. в начале этого скрипта осуществляется задание div с id="popup-box-21" (например)
$('body').append('<div class="popup-box" id="popup-box-21"><div class="close">X</div><div class="top"><h2></h2></div><div class="bottom">er</div></div>');
$('body').append('<div id="blackout"></div>');
, туда как прописать id? плодить кучу div я же не могу? |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
сюда продублирую ее, чтоб виднее было http://learn.javascript.ru/play/OfM4dc Цитата:
popup-box-1 popup-box-2 popup-box-3 popup-box-4 popup-box-5 popup-box-6 popup-box-7 popup-box-8 popup-box-9 |
я нажимал и смотрел работу скрипта - и именно его я хотел бы изменить под свои нужды. можно ли доработать скрипт чтобы у меня было 20 popup окон или 30... или больше.
чтобы были они например popup-box-14 popup-box-24 popup-box-34 popup-box-44 popup-box-54 popup-box-64 popup-box-74 popup-box-84 popup-box-94 ----- и ссответственно как сделать так чтобы не пришлось заранее писать девять блоков типа
$('body').append('<div class="popup-box" id="popup-box-1"><div class="close">X</div><div class="top"><h2></h2></div><div class="bottom">первое</div></div>');
а как-нибудь, если возможно сделать запись типа
$('body').append('<div class="popup-box" id="popup-box-'+id+'"><div class="close">X</div><div class="top"><h2></h2></div><div class="bottom">первое</div></div>');
у меня их должно быть либо много либо один, но чтобы туда передавался id той ссылки что я нажал |
Цитата:
Цитата:
Цитата:
Цитата:
Подумайте, как в этой строке var id = name[name.length - 1]; получить не один, а два последних символа. Намекну - substr, substring. |
$('body').append('<div class="popup-box" id="popup-box-'+id+'"><div class="close">X</div><div class="top"><h2></h2></div><div class="bottom">первое</div></div>');
- а как записать данное выражение? если оно должно определяться в начале? |
Цитата:
var id = name[name.length - 1]; можете делать див с этим id. Я не могу никак понять, какой смысл в этих манипуляциях с id, если все равно по каждой ссылке свой будет генерироваться. Зачем тогда вообще определять id? Просто создавайте попап в скрипте и показывайте его сразу. |
спасибо за "помощь" буду делать костыли как учили!! ))))
|
Цитата:
Неужели, чтоб перенести две строчки в коде, надо грузчика нанимать? Держите помощь: http://learn.javascript.ru/play/WQhou |
да дело не в этом, не в сарказме. вы не обижайтесь пожалуйста. Я начинающий, поэтому спрашиваю. Так бы лазил и искал по форумам если б хотел найти готовое решение.
Если сложно подсказать или направить (нет времени или желания например) то так и говорите - ИДИ ЧИТАЙ - ВОТ МАНУАЛ. и все )) и ваш код работает некорректно. можно 100 попапов открыть с одним id. и в этом случае не работает
$('.close').click(function() {
var scrollPos = $(window).scrollTop();
/* Similarly, hide the popup and blackout when the user clicks close */
$('[id^=popup-box-]').hide();
$('#blackout').hide();
$("html,body").css("overflow","auto");
$('html').scrollTop(scrollPos);
});
Я тоже людей обучаю, правда не программированию. Я им не говорю иди давай, или врачи не говорят "давай не болей".... ))) Еще раз прошу прощения за испорченный день!!! |
администрация, можно топик удалить (он неинформативен) - я решил вопрос по-другому. Спасибо
|
Цитата:
Цитата:
|
1 $('html').click(function() {
2 var scrollPos = $(window).scrollTop();
3 /* Similarly, hide the popup and blackout when the user clicks close */
4 $('[id^=popup-box-]').hide();
5 $('#blackout').hide();
6 $("html,body").css("overflow","auto");
7 $('html').scrollTop(scrollPos);
8 });
- закрывает ))) удаляйте топик. Я сделал по другому |
| Часовой пояс GMT +3, время: 09:45. |