Javascript.RU

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

не работает вторая кнопка slideToggle
Всем привет! Возникла такая проблемка в проэкте:

В html есть два дива :

<div class="details-toggle">
                        <strong class="toggle-trigger">View Details</strong><br/>
                        <div class="toggle-target" style="display: none">
                            <ul>
<li>Lorem</li>
                             </ul>
                        </div>
                    </div>


в разных местах документа, но при помощи кода который написан ниже методом слайдТогл разворачивается только первый toggle-target, второй же не реагирует вообще никак. Грешу на селектор что я написал, а вы что думаете?

$('.toggle-trigger').click(function () {
$(this).parent().find('.toggle-target').slideToggle(300);
});
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2018, 11:34
Аватар для 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 class="details-toggle">
		<strong class="toggle-trigger">View Details</strong><br/>
		<div class="toggle-target" style="display: none">
			<ul>
				<li>Lorem</li>
			</ul>
		</div>
	</div>

	<div class="details-toggle">
		<strong class="toggle-trigger">View Details</strong><br/>
		<div class="toggle-target" style="display: none">
			<ul>
				<li>Lorem</li>
			</ul>
		</div>
	</div>



</select>
<script>

$('.toggle-trigger').click(function () {
$(this).parent().find('.toggle-target').slideToggle(300);
});


</script>
</body>
</html>


таки работает
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2018, 12:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$(this).parent().find('.toggle-target') .... $(this).nextAll('.toggle-target')
.... $(this).siblings('.toggle-target')
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2018, 15:35
Интересующийся
Отправить личное сообщение для drakonolom Посмотреть профиль Найти все сообщения от drakonolom
 
Регистрация: 03.07.2018
Сообщений: 26

Сообщение от laimas Посмотреть сообщение
$(this).parent().find('.toggle-target') .... $(this).nextAll('.toggle-target')
.... $(this).siblings('.toggle-target')
ни один из вариантов не работает.
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2018, 15:56
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

drakonolom, а так?
$('.toggle-trigger').click(function() {
    $(this).closest('.details-toggle').find('.toggle-target').slideToggle(300);
});
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2018, 17:24
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drakonolom
ни один из вариантов не работает
Точно?

<!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 class="details-toggle">
        <strong class="toggle-trigger">View Details</strong><br/>
        <div class="toggle-target" style="display: none">
            <ul>
                <li>Lorem</li>
            </ul>
        </div>
    </div>
 
    <div class="details-toggle">
        <strong class="toggle-trigger">View Details</strong><br/>
        <div class="toggle-target" style="display: none">
            <ul>
                <li>Lorem</li>
            </ul>
        </div>
    </div>
 
 
 
</select>
<script>
 
$('.toggle-trigger').click(function () {
$(this).nextAll('.toggle-target').slideToggle(300);
});
 
 
</script>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2018, 17:39
Интересующийся
Отправить личное сообщение для drakonolom Посмотреть профиль Найти все сообщения от drakonolom
 
Регистрация: 03.07.2018
Сообщений: 26

да, точно.

Всем спасибо за ответы, дело в том что прикрепленный script к хэду имел итрибут async а я писал этот кусок кода вне document.ready, так что он воспринимал его не очень хорошо
Ответить с цитированием
  #8 (permalink)  
Старый 04.07.2018, 17:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от drakonolom
да, точно.
Щелкнуть "Посмотреть" и убедится, что все работает, ибо $(this).nextAll('.toggle-target') - найти среди следующих узлов узел с классом toggle-target, а $(this).siblings('.toggle-target') - найти среди узлов братьев узел с классом toggle-target.

А то что у вас баги в коде так это не вина методов.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки и баги на сайте Jeremen Сайт Javascript.ru 79 13.08.2021 12:47
не работает вторая форма отправки! gregory44 Общие вопросы Javascript 2 03.07.2015 00:37
Не работает console.log.apply(this,arguments) - Почему? Почемучкин Javascript под браузер 9 31.10.2014 17:17
В IE9 не работает кнопка отправить - type="submit" Edan Internet Explorer 3 24.12.2011 00:21
Не работает кнопка через live Dorian_bs Общие вопросы Javascript 7 04.12.2011 02:29