У меня есть кнопка, которая показывает или скрывает div, на котором есть определенный класс, с помощью slideToggle()
функции jQuery, и она работает нормально, за исключением случаев, когда есть другой div, который когда-то был скрыт, но теперь отображается в миксе.
Я также использую jQuery, чтобы выбрать div, который мне нужен, из события нажатия моих кнопок, например:
$(".MyButton").click(function () { var theDiv = $(this).next(".TheDivImAfter"); theDiv.slideToggle(); });
Я понимаю, что next()
функция jQuery буквально смотрит только на следующий элемент и что, когда между здесь и там есть элемент, который когда-то был скрыт, но теперь видим, next()
функции вместо этого видят это и ничего не выбирают, поскольку классы не совпадают. И в этом есть смысл.
Я nextUntil()
тоже пробовал, и это тоже ничего не выбирает, что для меня не имеет смысла. Я тоже пробовал find()
, first()
и siblings()
с разной степенью успеха, и в конце концов удивился, почему нет братьев и сестер, siblingsUntil()
потому что .TheDivImAfter
и .TheDivThatWasOnceHidden
есть.
И я пробовал псевдоселекторы вроде :not
:
$(this).next(".TheDivImAfter:not(.TheDivThatWasOnceHidden)");
Но в этих случаях это все еще не работает.
Есть ли способ пропустить или игнорировать класс, который когда-то был скрыт в div?
Я ценю любую помощь, которую может предложить кто-либо, мне все еще интересно, почему nextUntil()
не работает.
Спасибо
Я думаю, что вам нужно nextAll()
. Вот различия в соответствии с jQuery
API;
nextAll ()
Описание: получить всех следующих братьев и сестер каждого элемента в наборе совпадающих элементов, при необходимости отфильтрованных с помощью селектора.
nextUntil ()
Описание: получить всех следующих братьев и сестер каждого элемента до, но не включая элемент, совпадающий с переданным селектором, узлом DOM или объектом jQuery.
Вы можете видеть, что основное отличие состоит в том, что nextUntil
исключается элемент, соответствующий предоставленному селектору. Обе функции будут использовать фильтр, чтобы получить именно то, что div
вам нужно.
$(".MyButton").click(function () {
var theDiv = $(this).nextAll(".TheDivImAfter");
theDiv.slideToggle();
});
Эта статья взята из Интернета, укажите источник при перепечатке.
Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.
я говорю два предложения