Я пытаюсь переключить ul, но получаю сообщение об ошибке «slideToggle не является функцией». Меню используется для переключения списка.
$(function() {
$("li ul").hide();
var currentChildLevel;
var previousLevel;
var isAChild; //means it belongs to parent li
$("li ul").hide();
$("li > a + ul").prev("a").after('<span class = "children"> > </span>');
$("li a").click(function () {
console.info($(this).text());
});
$("span.children").click(function() {
$(this).find('ul').first().slideToggle();
});
});
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang = "en" xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta charset = "utf-8" />
</head>
<body>
<ul>
<li><a href = "#">Coffee</a></li>
<li><a href = "#">Tea</a>
<ul>
<li><a href = "#">Black tea</a></li>
<li><a href = "#">Green tea</a>
<ul class = "test">
<li><a href = "#">Black b</a></li>
<li><a href = "#">Black c</a></li>
</ul>
</li>
</ul>
</li>
<li><a href = "#">Milk</a></li>
</ul>
</body>
</html>
Обычно, когда пользователи щелкают >, должно отображаться подменю.
похоже, вы не предоставили html-коды для $("span.children") или, возможно, вы использовали неправильный селектор, который не привел к совпадению.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не могу воспроизвести указанную вами ошибку slideToggle is not a function.
Однако ваш код не будет работать, потому что эта строка неверна:
$(this).find('ul').first().slideToggle();
Элемент ul является родственным, а не дочерним элементом элемента span.children. Изменение его на следующее решает проблему:
$(this).siblings('ul').first().slideToggle();
$(function() {
$("li ul").hide();
var currentChildLevel;
var previousLevel;
var isAChild; //means it belongs to parent li
$("li ul").hide();
$("li > a + ul").prev("a").after('<span class = "children"> > </span>');
$("li a").on('click', function () {
console.info($(this).text());
});
$("span.children").on('click', function() {
$(this).siblings('ul').first().slideToggle();
});
});<!DOCTYPE html>
<html lang = "en" xmlns = "http://www.w3.org/1999/xhtml">
<head>
<meta charset = "utf-8" />
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<ul>
<li><a href = "#">Coffee</a></li>
<li><a href = "#">Tea</a>
<ul>
<li><a href = "#">Black tea</a></li>
<li><a href = "#">Green tea</a>
<ul class = "test">
<li><a href = "#">Black b</a></li>
<li><a href = "#">Black c</a></li>
</ul>
</li>
</ul>
</li>
<li><a href = "#">Milk</a></li>
</ul>
</body>
</html>
Поменять ли
$(function()на$(function($)проблему? Если это так, значит, что-то еще добавляет другую версию jquery, которая не включает метод slideToggle.