Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Функция для нужного блока (https://javascript.ru/forum/jquery/72652-funkciya-dlya-nuzhnogo-bloka.html)

floody 15.02.2018 02:06

Функция для нужного блока
 
Здравствуйте. Понимаю, что вопрос глупый. Нагуглить не могу, причиной тому не могу правильно сформулировать вопрос. Ближе к делу.

$('.openli').on('click', function(){
$('.openli').hide();
	$('.openall').show(300);
	$('.closeli').show();


В блоке у меня, как вы поняли, список. Проблема в том, что есть необходимость создать несколько блоков с названием "openall".
При клике начинают открываться все блоки, а мне необходимо чтобы открывался только блок, на которой был совершён клик.

Понимаю,что как-то необходимо использовать this, но как...

Aetae 15.02.2018 02:19

$(this)

floody 15.02.2018 21:43

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


$('.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)?

j0hnik 15.02.2018 22:38

смотрите пример

<!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()

laimas 16.02.2018 04:43

Цитата:

Сообщение от floody
Объясните, пожалуйста, конструкцию $('p', this).

Здесь this, это контекст которому принадлежит р.

ksa 16.02.2018 08:40

Цитата:

Сообщение от floody
Пока лазил по форумам, нашел код:
$('p', this).show();

Объясните, пожалуйста, конструкцию $('p', this).

Больше рекомендуют конструкцию
$(this).find('p').show();

Де быстрее работает и более понятна...

floody 16.02.2018 14:38

Всем спасибо за отклики!


Цитата:

Сообщение от ksa (Сообщение 478313)
Больше рекомендуют конструкцию
$(this).find('p').show();

Де быстрее работает и более понятна...

Правильно я понял, что
$(this).find('p').show();

имеет краткую форму записи?
$('p', this).show();

Nexus 16.02.2018 14:45

floody,
Цитата:

Сообщение от floody
Правильно я понял, что
$(this).find('p').show();

имеет краткую форму записи?
$('p', this).show();

Можно и так сказать.

j0hnik 16.02.2018 15:49

Цитата:

Сообщение от floody (Сообщение 478384)
Всем спасибо за отклики!
Правильно я понял, что
$(this).find('p').show();

имеет краткую форму записи?
$('p', this).show();

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


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