Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Скрыть кнопку, если поле div, который она выводит пустой (https://javascript.ru/forum/misc/54468-skryt-knopku-esli-pole-div-kotoryjj-ona-vyvodit-pustojj.html)

SuperTester 18.03.2015 17:56

Скрыть кнопку, если поле div, который она выводит пустой
 
Добрый день. Помогите решить проблему.

Имеем таблицу (на странице заказа)

<table class="simplecheckout-cart of_content_table">
    <tbody>
            <tr>
            <td class="image" hidden="true"><nobr>330 ₽</nobr></td> 
            <td class="name of_product_name">4 сыра
				<div style="display: none;" class="comment_options" id="comment247:YTozOntpOjY5NztzOjQ6IjEyNTciO2k6NzA3O3M6NDoiMTI4NyI7aTo3MTc7czo0OiIxMzE3Ijt9" hidden="true">
                        <div class="options">

                        </div>
                </div>
            </td>
            <td class="remove of_product_use">
            <img class="of_product_open" style="cursor:pointer;" alt="" onclick="basket_goods_mini_open('comment247:YTozOntpOjY5NztzOjQ6IjEyNTciO2k6NzA3O3M6NDoiMTI4NyI7aTo3MTc7czo0OiIxMzE3Ijt9')">
            </td> 
    </tbody>
</table>


По клику на кнопку с класом "of_product_open" поле "options" открывается. Хочу скрыть эту кнопку, если поле "options" у товара пустое. Как это сделать?


Вот сам скрипт, который делает поле видимым.
function basket_goods_mini_open(id) {
	var elem=document.getElementById(id);
	/*if (elem.hidden) {
		elem.hidden=false;
	} else {
		elem.hidden=true;
	}*/
	if($(elem).is(":hidden")) $(elem).show();
	else $(elem).hide();
}

laimas 18.03.2015 18:56

Если эта кнопка именно для того чтобы открывать опции товара, то почему она присутствует у товаров, у которых опций нет, да и сам контейнер опций отсутствующих зачем на странице?

SuperTester 18.03.2015 21:31

Эта кнопка присутствует у всех товаров. Подробнее отписался вам в личку.

laimas 18.03.2015 21:42

Посмотрел, а почему присутствует? Может я чего-то не понял, но:

1) у вас динамический контент, данные из базы сервер отдает клиенту
2) если данные в базе имеют надлежащую структуру, однозначно определяющую набор свойств сущностей, то отдавая данные, можно знать, что например свойство М есть NULL и вывод его не имеет смысла
3) если описываемая кнопка определяет режим свойства М, а свойство пустое, значит вывод кнопки также не имеет смысла

Я вот так понимаю, иначе для чего же тогда существуют серверные сценарии? Ради выплюнуть клиенту, а он пусть разгребает?

Или я чего-то не так понял, тогда поясните суть.

SuperTester 18.03.2015 23:15

вы полностью правы, во всем... но суть в том, что иногда легче реализовать хак со скриптом, который будет скрывать кнопку при определенных обстоятельствах, чем разбираться в коде движка

laimas 18.03.2015 23:44

И что сложного в поиске? По имени таблицы описывающей товары, найти любые запросы к ней в редакторе минутное дело, а дальше изменить код.

$(function() {
    $('div.comment_options:hidden').each(function() {
        $(this.parentNode).next().find('img').hide()
    })
});


Часовой пояс GMT +3, время: 14:41.