#javascript
#javascript
Вопрос:
У меня есть несколько разделов, каждый из которых содержит экземпляр нескольких разных элементов, каждый со своими уникальными классами и / или идентификаторами.
Много кода .js применяется к элементам внутри каждого из этих родительских разделов, и мой .js становится раздутым из-за постоянной необходимости делать такие вещи, как:
// Stuff like this occurs 15-20 times for similar but different actions
$(this).parent().nextAll('.target').eq(0).find('.toggle').slideToggle();
$(this).next('.alert').html('Success');
В контексте документа я понимаю, почему этот код необходим. Однако я чувствую, что если бы я только мог переопределить контрольную точку как родительский div вместо всего документа, я мог бы заменить запутанный код выше на ГОРАЗДО более простой:
function keepingCodeWithinParentDiv(){
$('.toggle').slideToggle();
$('.alert').html('Success');
}
Итак, есть ли способ сказать в Javascript: for this part nothing exists outside this div
?
Комментарии:
1. Нет. Но вы все равно могли бы, вероятно, очиститься, используя общего предка и выполняя
find()
вызовы на его основе.
Ответ №1:
Если у вас есть родительский элемент (назовем его element
), которым вы хотите ограничить свои операции выбора jQuery, вы можете просто передать его в качестве контекста для любого выбора jQuery:
$(".toggle", element).slideToggle();
См. Документ jQuery для получения дополнительной информации.
Если вы покажете нам свой фактический HTML и опишите, что вы пытаетесь получить, мы могли бы дать более конкретные советы.
Комментарии:
1. Это называется контекстом. $(«.toggle», элемент) — это то же самое, что и element.find(«.toggle»)