SpaceWayfarer
@SpaceWayfarer

Почему скрипт исполняется только на одной странице?

Сап.
В общем, имеется тренировочный сайт из двух вьюх: index и show (последняя у каждого элемента, т.е. show/:id). И есть простенький скрипт для всплывающего окна по нажатию на ссылку.
Ну и проблема в том, что работает скрипт только на одной из вьюх после загрузки страницы. Т.е. если перейти на другой id, то окно уже появляться не будет.
Я не очень знаком с js, на самом деле, но я так понимаю, что при загрузке страницы как бы функции навешиваются только на элементы одной из вьюх, а остальные идут лесом. Собственно, вопрос в том, как этого избежать?

Если нужно, сам скрипт:
$(function () {
	//script for popups
	$('a.show-popup').click(function () {
		$('div.'+$(this).attr("rel")).fadeIn(500);
		$("body").append("<div id='overlay'></div>");
		$('#overlay').show().css({'filter' : 'alpha(opacity=80)'});
		return false;				
	});	
	$('a.close').click(function () {
		$(this).parent().parent().fadeOut(100);
		$('#overlay').remove('#overlay');
		return false;
	});
});
  • Вопрос задан
  • 1455 просмотров
Решения вопроса 2
@tpepost
Откройте ваш layout (Например: application.html.erb)
Если там есть такая строчка:
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

то используется turbolinks.
Штука очень интересная, но нужно с ней обращаться. Если уберете турболики, то ваш код будет работать на каждой странице.
Почему код не работает с turbolinks? Эта штука загружает css и js только один раз, при первом открытии страницы. При переходе на другую, файлы не загружаются снова. Это дает прирост производительности, но нужно менять код для работы с turbolinks. Поэтому бегом детально изучать документацию https://github.com/rails/turbolinks!
Ответ написан
Комментировать
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
Возможно у вас используется turbolinks.
Попробуйте $(function () {
заменить на
$(document).on("page:change", function () {
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
delch
@delch
Frontend developer
добавьте debugger после комментария, посмотрите какие элементы в коллекции $('a.show-popup'). Может у вас класса этого нет, либо элемент не является ссылкой. С таким кол-вом инфы это пальцев в небо.
Ответ написан
Комментировать
TouchTheMind
@TouchTheMind
js writer
Возможно скрипта просто нет на странице при переходе на другой id?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы