Передача данных из карточки в popup форму
Есть карточки товаров, грубо выглядят так:
<div class="cart" id="1"> <h3>Пицца пепперони</h3> <img src="1.png" height="150px"> <p class="desc">Состав пиццы</p> <p class="selects"> <span class="ves">450 гр.</span> <span class="testo"> <b>Размер:</b> M </span> </p> <p class="cena">500 руб.</p> <div class="order-form-go btn">Заказать</div> </div> <div class="cart" id="2"> <h3>Пицца Маргарита</h3> <img src="2.png" height="150px"> <p class="desc">Состав пиццы 2</p> <p class="selects"> <span class="ves">320 гр.</span> <span class="testo"> <b>Размер:</b> S </span> </p> <p class="cena">370 руб.</p> <div class="order-form-go btn">Заказать</div> </div> есть попап форма в которую должны передаваться данные выбранной пиццы по клику на кнопку "Заказать": <div id="modal-form"> <span id="modal_close">X</span> <form action="" method="post"> <h3>Оформление заказа</h3> <hr> <h4>Название товара</h4> <img src="картинка карточки" height="50px" align="left"> <br> <p>описание карточки</p> <p> <span> <b>Вес:</b> ? гр. </span> <span> <b>Размер:</b> ? </span> </p> <p> <b>Цена:</b> ? руб. </p> <input name="order_go" type="submit" value="ОТПРАВИТЬ"> </form> </div> <div id="overlay"></div><!-- Пoдлoжкa --> Скрипт показа/скрытия попапа: <script> $(document).ready(function() { $('div.order-form-go').click( function(event){ event.preventDefault(); // выключaем стaндaртную рoль элементa $('#overlay').fadeIn(400, // снaчaлa плaвнo пoкaзывaем темную пoдлoжку function(){ // пoсле выпoлнения предъидущей aнимaции $('#modal-form') .css('display', 'block') // убирaем у мoдaльнoгo oкнa display: none; .animate({opacity: 1}, 200); // плaвнo прибaвляем прoзрaчнoсть oднoвременнo сo съезжaнием вниз }); }); /* Зaкрытие мoдaльнoгo oкнa, тут делaем тo же сaмoе нo в oбрaтнoм пoрядке */ $('#modal_close, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке $('#modal-form') .animate({opacity: 0}, 200, // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх function(){ // пoсле aнимaции $(this).css('display', 'none'); // делaем ему display: none; $('#overlay').fadeOut(400); // скрывaем пoдлoжку } ); }); }); </script> Вывод попапа сделал, но не знаю как динамически передать данные из карточки в попап, помогите решить проблемку. |
$(document).ready(function() { $('div.order-form-go').click( function(event){ $('#modal-form h4').text($(this).siblings('h3').text()); .... итд |
Вот написал я:
$(document).ready(function() { $('div.order-form-go').click( function(event){ $('#modal-form h4').text($(this).siblings('h3').text()); }); }); И никакого действия нет |
Код выше работает! А как быть если нужно взять текст элемента который не sibling с div.order-form-go?
|
desperate_one,
обьект с данными лучше, чем парсить html. |
Ну к примеру:
<div id="root_parent"> <div class="parent"> <div class="header"> <h3>Text</h3> </div> </div> <div class="btns"> <button></button> </div> </div> <div id="root_parent"> <div class="parent"> <div class="header"> <h3>Text</h3> </div> </div> <div class="btns"> <button></button> </div> </div> <div id="root_parent"> <div class="parent"> <div class="header"> <h3>Text</h3> </div> </div> <div class="btns"> <button></button> </div> </div> <div id="receiver">text</div> Как сделать, чтоб при клике на btns, в блок receiver выводился текст из div.header h3? |
desperate_one,
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(document).ready(function() { $('.btns').click( function(event){ event.preventDefault(); $('#receiver').text($(this).siblings('.parent').find('h3').text()) }) }) </script> </head> <body> <div id="root_parent"> <div class="parent"> <div class="header"> <h3>Text1</h3> </div> </div> <div class="btns"> <button></button> </div> </div> <div id="root_parent"> <div class="parent"> <div class="header"> <h3>Text2</h3> </div> </div> <div class="btns"> <button></button> </div> </div> <div id="root_parent"> <div class="parent"> <div class="header"> <h3>Text3</h3> </div> </div> <div class="btns"> <button></button> </div> </div> <div id="receiver">text</div> </body> </html> |
а если при клике на button?
|
Я просто не так изложил вложенность, у меня такое дерево:
<ul> <li> <ul> <li></li> <li></li> <li></li> </ul> </li> <li>динамический текст</li> <li> <ul> <li></li> <li></li> <li>динамическая кнопка</li> </ul> </li> </ul> <p>Область вывода</p> И в таком случае если нужно взять ДИНАМИЧЕСКИЙ ТЕКСТ при нажатии на ДИНАМИЧЕСКУЮ КНОПКУ и вывести его в ОБЛАСТЬ ВЫВОДА, они же не на одном уровне находятся, то как взять значение? |
desperate_one,
$(document).ready(function() { $('.btns button').click( function(event){ event.preventDefault(); $('#receiver').text($(this).parent().siblings('.parent').find('h3').text()) }) }) |
Цитата:
Цитата:
|
desperate_one,
обьект с данными + шаблон карточки + шаблон формы и всё |
А если у всех объектов только классы и все они одинаковые?
|
<div class="pos left" itemscope="" itemtype="http://schema.org/Product" data-subcat="" data-id="3" data-price="470" style="margin-left: 37px;"> <div class="posImg"> <div class="posImg_hover"> </div> <img itemprop="image" src="http://hub.loc/images/catalog/pizza_3247.png" data-big="http://hub.loc/images/catalog/pizza_3247.png" class="cboxElement"> </div> <div class="posName myRed posBottom"> <table> <tbody><tr> <td valign="middle" itemprope="name"> <a class="myRed cart-name">Мега пепперони</a> </td> </tr> </tbody></table> </div> <div class="ingrids posBottom" itemprop="description"> <span>КОЛБАСА ПЕППЕРОНИ, СЫР МОЦАРЕЛЛА, ФИРМЕННЫЙ СОУС</span> </div> <div class="infovalues posBottom"> <span class="weight left">вес: <b>510</b> гр.</span> </div> <div class="attribute posBottom"> <label class="selDiam">Выбор диаметра: </label> <div class="form-radios"> <div class="form-item "> <label class="option "> <span class="diameter-size" data-weight2="480" data-weight1="360" data-price2="360" data-price1="360" data-diam="S">S</span> <br> <span class="diameter-price">360 руб</span> </label> </div> <div class="form-item "> <label class="option "> <span class="diameter-size" data-weight2="640" data-weight1="510" data-price2="470" data-price1="470" data-diam="M">M</span> <br> <span class="diameter-price">470 руб</span> </label> </div> <div class="form-item "> <label class="option "> <span class="diameter-size" data-weight2="1010" data-weight1="710" data-price2="670" data-price1="670" data-diam="L">L</span> <br> <span class="diameter-price">670 руб</span> </label> </div> </div> </div> <div class="selects"> <div class="form-item"> <label class="l">количество:</label> <select class="l" name="amount"> <option class="colvo-sel" value="1">1 шт.</option> <option class="colvo-sel" value="2">2 шт.</option> <option class="colvo-sel" value="3">3 шт.</option> <option class="colvo-sel" value="4">4 шт.</option> <option class="colvo-sel" value="5">5 шт.</option> <option class="colvo-sel" value="6">6 шт.</option> <option class="colvo-sel" value="7">7 шт.</option> <option class="colvo-sel" value="8">8 шт.</option> <option class="colvo-sel" value="9">9 шт.</option> <option class="colvo-sel" value="10">10 шт.</option> </select> </div> <div class="form-item"> <label class="">тесто: </label> <select name="daugh" class="form-select"> <option value="2">пышное</option> <option value="1">тонкое</option> </select> </div> </div> <div class="btnTocart" style="padding-top: 0.557982px;"> <center> <div class="tocart" data-id="1100" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" style="user-select: none;"> <div class="leftBtn btn left"> </div> <div class="centerBtn btn left redshdw pizz-cena"> <b>470</b> руб. </div> <div class="order-form-go seccenterBtn btn left yelshdw"> <b>ЗАКАЗАТЬ</b> </div> <div class="rightBtnYel btn left"> </div> <meta itemprop="price" content="470"> <meta itemprop="priceCurrency" content="RUB"> <link itemprop="availability" href="http://schema.org/InStock"> </div> </center> </div> </div> Вот карточка целиком, из неё нужно взять название, размер, тесто, кол-во и цену. |
Цитата:
|
desperate_one,
далее сами <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(document).ready(function() { $('.pos').on('click', '.order-form-go', function(event){ event.preventDefault(); var block = event.delegateTarget; var title = $('.cart-name', block).text(); var data = $('.diameter-size:eq(1)', block).data();// $('.diameter-size.active', block).data; var diam = data.diam; var daugh = $('[name="daugh"]', block).val(); var price = data['price'+daugh]; var amount = $('[name="amount"]', block).val(); alert([title, diam, daugh, amount, price]); // название, размер, тесто, кол-во и цену. }) }) </script> </head> <body> <div class="pos left" itemscope="" itemtype="http://schema.org/Product" data-subcat="" data-id="3" data-price="470" style="margin-left: 37px;"> <div class="posImg"> <div class="posImg_hover"> </div> <img itemprop="image" src="http://hub.loc/images/catalog/pizza_3247.png" data-big="http://hub.loc/images/catalog/pizza_3247.png" class="cboxElement"> </div> <div class="posName myRed posBottom"> <table> <tbody><tr> <td valign="middle" itemprope="name"> <a class="myRed cart-name">Мега пепперони</a> </td> </tr> </tbody></table> </div> <div class="ingrids posBottom" itemprop="description"> <span>КОЛБАСА ПЕППЕРОНИ, СЫР МОЦАРЕЛЛА, ФИРМЕННЫЙ СОУС</span> </div> <div class="infovalues posBottom"> <span class="weight left">вес: <b>510</b> гр.</span> </div> <div class="attribute posBottom"> <label class="selDiam">Выбор диаметра: </label> <div class="form-radios"> <div class="form-item "> <label class="option "> <span class="diameter-size" data-weight2="480" data-weight1="360" data-price2="360" data-price1="360" data-diam="S">S</span> <br> <span class="diameter-price">360 руб</span> </label> </div> <div class="form-item "> <label class="option "> <span class="diameter-size" data-weight2="640" data-weight1="510" data-price2="470" data-price1="470" data-diam="M">M</span> <br> <span class="diameter-price">470 руб</span> </label> </div> <div class="form-item "> <label class="option "> <span class="diameter-size" data-weight2="1010" data-weight1="710" data-price2="670" data-price1="670" data-diam="L">L</span> <br> <span class="diameter-price">670 руб</span> </label> </div> </div> </div> <div class="selects"> <div class="form-item"> <label class="l">количество:</label> <select class="l" name="amount"> <option class="colvo-sel" value="1">1 шт.</option> <option class="colvo-sel" value="2">2 шт.</option> <option class="colvo-sel" value="3">3 шт.</option> <option class="colvo-sel" value="4">4 шт.</option> <option class="colvo-sel" value="5">5 шт.</option> <option class="colvo-sel" value="6">6 шт.</option> <option class="colvo-sel" value="7">7 шт.</option> <option class="colvo-sel" value="8">8 шт.</option> <option class="colvo-sel" value="9">9 шт.</option> <option class="colvo-sel" value="10">10 шт.</option> </select> </div> <div class="form-item"> <label class="">тесто: </label> <select name="daugh" class="form-select"> <option value="2">пышное</option> <option value="1">тонкое</option> </select> </div> </div> <div class="btnTocart" style="padding-top: 0.557982px;"> <center> <div class="tocart" data-id="1100" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer" style="user-select: none;"> <div class="leftBtn btn left"> </div> <div class="centerBtn btn left redshdw pizz-cena"> <b>470</b> руб. </div> <div class="order-form-go seccenterBtn btn left yelshdw"> <b>ЗАКАЗАТЬ</b> </div> <div class="rightBtnYel btn left"> </div> <meta itemprop="price" content="470"> <meta itemprop="priceCurrency" content="RUB"> <link itemprop="availability" href="http://schema.org/InStock"> </div> </center> </div> </div> </body> </html> |
Идеально! Огромнейшее спасибо
|
Часовой пояс GMT +3, время: 16:46. |