Задать вопрос
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;
	});
});
  • Вопрос задан
  • 1489 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 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?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы