Как закрыть <div> по клику <a>

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Доброго времени суток уважаемые форумчане. Подскажите пожалуйста как реализовать следующее, допустим есть код: <div>Тут будет много текста <a>Закрыть див</a></div> . Как сделать так, чтоб при клике на "Закрыть див" для div присваивался display: none; ?

Ничего не смог найти подходящего для себя, либо много когда (ненужного) либо не работает, либо реализовано как спойлер. Заренее спасибо за помощь.
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Поискал, почитал, поигрался нашел такой вариант:

<script>
function change(idName) {
document.getElementById(idName).style.display = 'none';
}
</script>
<div id="test">Hi World! <a href="#" onclick="change('test')">Х</a></div>

Насколько этот вариант валиден? Может есть лучше варианты?
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
JQuery используешь или нативный js?
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
К сожалению не знаю ни JQuery, ни нативный js. Нашел решение в гугле, и методом тыка в jsfiddle игрался. Вроде получилось. Но вот насколько это правильно? Хочу сделать info.tpl для шаблона DataLife Engine.
Сейчас такой код:

<div class="info clearfix" id="info">
<div class="info-error">
{title} {error}
</div>
<div class="info-times">
<i class="fa fa-times" aria-hidden="true" onclick="change('info')"></i>
</div>
</div>
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
Скорей всего подключен в шаблоне jQuery.
Тогда можно так:

<script>
$('#info').on('click', '.fa-times', function(e) {
e.preventDefault();
$(this).closest('.info').hide();
});
</script>
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Библиотеки не подключены, да и подключать их не зачем вроде. Шаблон будет очень простым. Это наверно одно из самых сложных действий в нем.
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Gameer посоветовал
Код:
$(function($){
$('body').on('click', '#id', function(){
if($('[data-idhide]').is(":visible"))
$('[data-idhide]').hide();
else
$('[data-idhide]').show();
});
});
Но как присобачить не понимаю
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
Gameer посоветовал
Код:
$(function($){
$('body').on('click', '#id', function(){
if($('[data-idhide]').is(":visible"))
$('[data-idhide]').hide();
else
$('[data-idhide]').show();
});
});
Но как присобачить не понимаю
Если не собираешься использовать jQuery то от этого кода нет смысла.
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Подключить библиотеку это минута дела. Только какую версию лучше? И как потом быть с кодом
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
используй 2.x лучше
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Код:
<script type="text/javascript">
    $(function(){
        $('#close').click(function(){
        $("#info").hide();  
         });
    });
</script>
Нашел код, который когда-то использовал, но без библиотеки опять таки не работает.
А почему 1 или 2 есть уже 3.1
Подключать лучше с google или с своего сервера?

Мои подключения:
Код:
{jsfiles}
{AJAX}
<script src="{THEME}/js/obscure.js"></script>
Вставлять после {AJAX} или перед, где лучше.
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
Первая версия поддерживает браузеры в плоть до ie 6. Вторая версия только от ie 9. 3 версия от 10 и выше, но там много чего вырезано и если ты не соображаешь в js то могут быть проблемы при подключении разных библиотек.
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
Непонятно что ты хочешь. Тебе предоставили код который выполняет то что тебе надо
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Я хочу понять в отличии библиотек, я понял что последняя не значит лучшая. Или не так?
И как лучше ее подключать, в head или перед /body?
Так же узнать в DLE есть родное подключение скриптов {jsfiles} и {AJAX}, подключать перед или после них.
 

anime

Гуру
Кодер
Регистрация
13 Мар 2017
Сообщения
129
Реакции
50
Баллы
28
Использовать надо ту с которой у тебя будет меньше проблем. Если не собираешься поддерживать старые браузеры то используй jQuery 2.x. По поводу подключений, тут обратись к документации dle
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Спасибо всем за помощь.
Если я правильно понял в моем случае правильно будет подключить перед другими скриптами, которые перед /body, но после {jsfiles} и {AJAX}

Таким образом:
Код:
{jsfiles}
{AJAX}
Библиотека
<script src="{THEME}/js/obscure.js"></script>
Но лучше грузить с гугла или с своего сервера?
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
Код:
<script type="text/javascript">
    $(function(){
        $('#close').click(function(){
        $("#info").hide(); 
         });
    });
</script>
Нашел код, который когда-то использовал, но без библиотеки опять таки не работает.
А почему 1 или 2 есть уже 3.1
Подключать лучше с google или с своего сервера?

Мои подключения:
Код:
{jsfiles}
{AJAX}
<script src="{THEME}/js/obscure.js"></script>
Вставлять после {AJAX} или перед, где лучше.
Если DLE то не нужно больше никаких библиотек jquery
 

Cartmont

Новичок
Регистрация
12 Мар 2017
Сообщения
139
Реакции
17
Баллы
18
Я нашел проблему, если {jsfiles} выношу в body, то скрипты не работают.
Но почему так? Я же все сделал по инструкции, вынес и поставил перед {AJAX}.
 
Сверху Снизу