
15.02.2018, 02:06
|
|
Новичок на форуме
|
|
Регистрация: 15.02.2018
Сообщений: 4
|
|
|
Функция для нужного блока
Здравствуйте. Понимаю, что вопрос глупый. Нагуглить не могу, причиной тому не могу правильно сформулировать вопрос. Ближе к делу.
$('.openli').on('click', function(){
$('.openli').hide();
$('.openall').show(300);
$('.closeli').show();
В блоке у меня, как вы поняли, список. Проблема в том, что есть необходимость создать несколько блоков с названием "openall".
При клике начинают открываться все блоки, а мне необходимо чтобы открывался только блок, на которой был совершён клик.
Понимаю,что как-то необходимо использовать this, но как...
|
|

15.02.2018, 02:19
|
 |
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,618
|
|
__________________
29375, 35
|
|

15.02.2018, 21:43
|
|
Новичок на форуме
|
|
Регистрация: 15.02.2018
Сообщений: 4
|
|
С горем пополам задачу решил так, не знаю насколько валидный код, но он работает...
$('.openli').click(function()
{
$(this).hide();
},
function(){
$(this).parent().find('.openall').show(300);
$(this).parent().find('.closeli').show(300);
});
Понял, что без предоставления кода HTML неправильно писать на форум, исправлюсь.
ЕЩЕ ВОПРОС:
Пока лазил по форумам, нашел код:
$('p', this).show();
Объясните, пожалуйста, конструкцию $('p', this).
Онa будет отличаться чем-то от $('p'); $(this)?
|
|

15.02.2018, 22:38
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
смотрите пример
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
</head>
<body>
<div>00
<p>4</p>
</div>
<div>00
<p>4</p>
</div>
<script>
$('div').click(function(){
$('p', this).hide();
});
</script>
</body>
</html>
a $(this) бы скрыл div вместе с p
на счет вашего кода, он не совсем коректный
строку 7-8 можно объединить!
.parent().find('.closeli') - можно заменить на .siblings('.closeli'), если не сработает значит удалить .parent()
|
|

16.02.2018, 04:43
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Сообщение от floody
|
|
Объясните, пожалуйста, конструкцию $('p', this).
|
Здесь this, это контекст которому принадлежит р.
|
|

16.02.2018, 08:40
|
 |
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,304
|
|
|
Сообщение от floody
|
Пока лазил по форумам, нашел код:
$('p', this).show();
Объясните, пожалуйста, конструкцию $('p', this).
|
Больше рекомендуют конструкцию
$(this).find('p').show();
Де быстрее работает и более понятна...
|
|

16.02.2018, 14:38
|
|
Новичок на форуме
|
|
Регистрация: 15.02.2018
Сообщений: 4
|
|
Всем спасибо за отклики!
Сообщение от ksa
|
Больше рекомендуют конструкцию
$(this).find('p').show();
Де быстрее работает и более понятна...
|
Правильно я понял, что
$(this).find('p').show();
имеет краткую форму записи?
$('p', this).show();
|
|

16.02.2018, 14:45
|
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,842
|
|
floody,
|
Сообщение от floody
|
Правильно я понял, что
$(this).find('p').show();
имеет краткую форму записи?
$('p', this).show();
|
Можно и так сказать.
|
|

16.02.2018, 15:49
|
 |
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от floody
|
Всем спасибо за отклики!
Правильно я понял, что
$(this).find('p').show();
имеет краткую форму записи?
$('p', this).show();
|
результат один и тот же, только выполняют по разному, первая запись действительно практически во всех случаях работает быстрей.
|
|
|
|