Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2011, 10:27
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22

метод hmtl() удалят исходное содержимое
Здравствуйте, помогите исправить ошибку.
Обработчик берет div блок, у которого display: none, и вставлять его в другой div блок (у которого настроены стили, и который находится в нужном мне месте). Так вот после первого клика все получается нормально. Но метод html() удаляет исходное содержимое и при втором клике уже ничего нет.(так как содержимое удалено)
HTML:
<div id="cn-menu-light-overlay">
    <div id="cn-menu-light-block">
    </div>
</div>
<div class="test-link">
    <h4>закуска</h4>
    <div class="cn-menu-object" style="display: none;">
        <h4>чтобы это могло быть?</h4>
        <img src="images/menu_object.jpg"></img>
        <ul>
            <li><span>Цена:</span>300 руб</li>
            <li><span>Порция:</span>300 г</li>
            <li><span>Калории:</span>300 кал</li>
            <li><span>Состав:</span>Мука, вода, рис, курица, яйцо, сахар, специи. Все переммешать и выкинуть.</li>
        </ul>
    </div>
</div>

CSS:
#cn-menu-light-overlay img { border: none; }
#cn-menu-light-overlay {        display: none;  
                                                position: absolute;
                                                top : 0;
                                                left : 0;
                                                z-index : 90;
                                                height : 1500px;
                                                width : 100%;
                                                background-image: url(../i/overlay.png); 
                                                }
* html #cn-menu-light-overlay{
        background-color: #333;
        back\ground-color: transparent;
        background-image: url(blank.gif);
        filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../i/overlay"
, sizingMethod="scale");
        }
 
#cn-menu-light-block {          
                                                position: absolute;
                                                top : 100px;
                                                left : 480px;
                                                z-index : 100;
                                                height : 400px;
                                                width : 400px;
                                                background-color: #FFF; 
                                                }
.test-link:hover { cursor: pointer;}

JS:
$(document).ready(function(){
                $('div:.test-link').bind('click', showLightBlock);
                $('div:#cn-menu-light-overlay').bind('click', hideLightBlock);
        });
 
function showLightBlock(eventObj)
{
        var block = $('div:#cn-menu-light-overlay div#cn-menu-light-block');
        var d = $('div', this).children();
        block.html(d);
        block.find('div').css('display', 'block');;
        block.css('display', 'block');;
        $('div:#cn-menu-light-overlay').css('display', 'block');
}
 
function hideLightBlock()
{
        $('div:#cn-menu-light-overlay').css('display', 'none');;
 
}


Подскажите как сделать, чтобы не удалял.
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2011, 10:33
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

http://jquery.page2page.ru/index.php...82%D0%BE%D0%B2
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2011, 10:57
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22

Не помогло.

Последний раз редактировалось oke11o, 05.09.2011 в 11:06.
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2011, 13:15
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

http://jquery.page2page.ru/index.php...B8%D1%86%D1%8B
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2011, 13:19
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

elem.html(elem.html()+newHtml);
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #6 (permalink)  
Старый 05.09.2011, 14:07
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от walik
elem.html(elem.html()+newHtml);
elem.append(newHtml) тогда уж так, наверно?
Ответить с цитированием
  #7 (permalink)  
Старый 05.09.2011, 14:08
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22

Serg_pnz, это вообще не то.

walik, не очень понятно зачем. Мне надо обновлять содержимое блока <div id="cn-menu-light-block"> содержимым блока <div class="cn-menu-object">
Ответить с цитированием
  #8 (permalink)  
Старый 05.09.2011, 14:14
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22

вот вся страничка с кодом и css: http://ifolder.ru/25567538
Ответить с цитированием
  #9 (permalink)  
Старый 05.09.2011, 15:12
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Надо в data помещать html код а не ссылку на выборку дочерних обьектов.
вместо
var data = $('div', this).children();

писать
var data = $('div', this).html();

У тебя получалось так

1) Пользователь кликал по первой ссылке, при этом содержимое перемещалось из контейнера this, в твой лайт бокс.
2) Пользователь кликал по другой ссылке, и снова делалось перемещение уже из второго контейнера.
3) Пользователь снова кликал по первой ссылке, программа снова пытался сделать перемещение из контейнера this, но не тут-то было, ты ведь переместил его содержимое уже на шаге 1, и контейнер пуст, а то что ты переместил на первом шаге пользователь уже давно затёр на втором. короче html($(' селектор')) - перемещает, а не копирует.


function showLightBlock(eventObj)
{
	var block = $('div:#cn-menu-light-overlay div#cn-menu-light-block');
	//var data = $('div', this).children();                                           // неправильная строка
	var data = $('div', this).html();                                                  // правильная строка
	
	block.html(data);
	setCssLightBlock(block);
}
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 05.09.2011 в 15:31.
Ответить с цитированием
  #10 (permalink)  
Старый 05.09.2011, 15:44
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

ОФФТОП!

Если ты собрался делать сайт без серверных скриптов, то может как минимум есть смысл вынести меню блюд в отдельный файл, к примеру в файл в формате json - так будет проще редактировать меню и кроме того при необходимости можно дописать админку, не изменяя клиента.
как вариант.
1)Скрипт при загрузке страницы сделает запрос к серверу с целью получения файла с блюдами
2) превращаем результат запроса в массив при помощи Json.parse
3) Скрипт в цикле переберает массив и заполняет меню блюд

просто когда блюд будет под сотню, редактировать html будет вообще не прикольно.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 05.09.2011 в 15:49.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск