Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Выполнение скрипта в контексте элемента (https://javascript.ru/forum/events/72629-vypolnenie-skripta-v-kontekste-ehlementa.html)

kvizor34 13.02.2018 12:04

Выполнение скрипта в контексте элемента
 
Абстрагируемся.
Есть скрипт (слайдер), и есть 2 блока для которых он должен выполнятся. Но т.к. в одном блоке может быть 4 слайда а в другом, скажем, 3, выполнение одного и того-же срипта для обоих будет не правильным, ибо в скрипте происходит подсчёт количества слайдов, и там много ещё чего поламается. К тому-же при нажатии переключателя в одном блоке происходит смена слайда и в другом...
В идеале - чтобы скрипт инициализировал себя для каждого из двух блоков отдельно.
Сейчас скрипт подключается перед закрытием body, а начинается его выполнение со строчки $(document).ready(function () {

p.s. можно конечно элементам второго блока задать другие классы и продублировать скрипт с этими изменениями, но я уверен что есть способ использовать ОДИН скрипт для обоих элементов.

рони 13.02.2018 12:20

Цитата:

Сообщение от kvizor34
Есть скрипт

где код или документация?

j0hnik 13.02.2018 12:22

kvizor34, :) Мысли правильные

kvizor34 13.02.2018 12:26

Ну к примеру, вот код для кнопки переключателя слайдов:
$(document).ready(function () {	
     $('.right').click(function() {
             nextSlide();
     });
});

элемент с классом .right есть как и в первом так и во втором блоке, соответственно функция сработает и поменяет мне слайд для обоих блоков.

j0hnik 13.02.2018 12:32

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>

	<div>
		<span>текст1</span>
		<button class="right">кнопка</button>
	</div>

	<div>
		<span>текст2</span>
		<button class="right">кнопка</button>
	</div>

	<script>
		$(document).ready(function () {	
			$('.right').click(function() {
				$(this).prev().html('другой текст');
			});
		});
	</script>
	
</body>
</html>


вот вам пища для размышления.
если лень думать, в этом форуме, куча примеров ротаторов контента. просто поискать.

kvizor34 13.02.2018 12:38

Если я вас правильно понял, то отбор всех элементов при выполнении, в моём случае должен быть относительным?

j0hnik 13.02.2018 12:41

Цитата:

Сообщение от kvizor34 (Сообщение 477972)
Если я вас правильно понял, то отбор всех элементов при выполнении, в моём случае должен быть относительным?

если разные селекторы вас не устраивают, то да.

а так можно дать элементу доп. класс и ориентироваться на него.

kvizor34 13.02.2018 12:43

Спасибо! мысль понял, как реализую отпишу!)

kvizor34 13.02.2018 13:16

Цитата:

Сообщение от j0hnik (Сообщение 477974)
если разные селекторы вас не устраивают, то да.

а так можно дать элементу доп. класс и ориентироваться на него.

Помогите реализовать селектор вида
this->родитель->родитель->сосед с классом slidewrapper

иными словами - мне нужно добраться до .slidewrapper через .right
<div class="slider">
  <div class="slidewrapper"></div>
  <div class="switch">
    <div class="buttons">
      <div class="right"></div>
    </div>
  </div>
</div>

j0hnik 13.02.2018 13:19

$(this).parent().parent().siblings(".slidewrapper");


Часовой пояс GMT +3, время: 23:17.