Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2018, 02:06
Новичок на форуме
Отправить личное сообщение для floody Посмотреть профиль Найти все сообщения от floody
 
Регистрация: 15.02.2018
Сообщений: 4

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

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


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

Понимаю,что как-то необходимо использовать this, но как...
Ответить с цитированием
  #2 (permalink)  
Старый 15.02.2018, 02:19
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,584

$(this)
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 15.02.2018, 21:43
Новичок на форуме
Отправить личное сообщение для floody Посмотреть профиль Найти все сообщения от floody
 
Регистрация: 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)?
Ответить с цитированием
  #4 (permalink)  
Старый 15.02.2018, 22:38
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 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()
Ответить с цитированием
  #5 (permalink)  
Старый 16.02.2018, 04:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от floody
Объясните, пожалуйста, конструкцию $('p', this).
Здесь this, это контекст которому принадлежит р.
Ответить с цитированием
  #6 (permalink)  
Старый 16.02.2018, 08:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

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

Объясните, пожалуйста, конструкцию $('p', this).
Больше рекомендуют конструкцию
$(this).find('p').show();

Де быстрее работает и более понятна...
Ответить с цитированием
  #7 (permalink)  
Старый 16.02.2018, 14:38
Новичок на форуме
Отправить личное сообщение для floody Посмотреть профиль Найти все сообщения от floody
 
Регистрация: 15.02.2018
Сообщений: 4

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


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

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

имеет краткую форму записи?
$('p', this).show();
Ответить с цитированием
  #8 (permalink)  
Старый 16.02.2018, 14:45
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

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

имеет краткую форму записи?
$('p', this).show();
Можно и так сказать.
Ответить с цитированием
  #9 (permalink)  
Старый 16.02.2018, 15:49
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

имеет краткую форму записи?
$('p', this).show();
результат один и тот же, только выполняют по разному, первая запись действительно практически во всех случаях работает быстрей.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
стрелки вниз, верх при раздвижение блоков dima018 Элементы интерфейса 8 12.02.2018 21:29
Якорное меню для секций внутри блока Perepelenok Общие вопросы Javascript 3 19.08.2016 19:41
Функция для дозагрузки контента Wahtel Ваши сайты и скрипты 3 06.01.2015 18:05
скрипт разворачивающегося блока для комментариев — 10$ wlad2 Работа 2 13.02.2014 19:01
Своя Функция для модуля Доставки (pickpoint.ru) jekjuk Общие вопросы Javascript 0 19.05.2011 16:32