首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoffeScript只在Rails应用程序重新加载页面之后才能工作。

CoffeScript只在Rails应用程序重新加载页面之后才能工作。
EN

Stack Overflow用户
提问于 2015-03-11 17:11:50
回答 1查看 80关注 0票数 1

我有两个选择,第二个根据第一个的值变化。我用CoffeScript。

代码语言:javascript
复制
		<%= f.collection_select :type, RequestType.order(:typeName), :id, :typeName, 
{include_blank:true }, {:class => "types"} %>
   
 <%= f.grouped_collection_select :subtype, RequestType.order(:typeName), 
:RequestSubTypes, :typeName, :request_type_id, :subTypeName, 
{include_blank:true},
{:class => "subTypes" }  %>

当select 1更改第二次重新加载中的选项时(第二次选择中的选项取决于在第一次中选择的选项。以下是我的CoffeScript代码:

代码语言:javascript
复制
jQuery ->
	subTypes = $(".subTypes").html()
	$(".subTypes").parent().hide()
	$(".types").change ->
		type = $(".types :selected").text()
		options = $(subTypes).filter("optgroup[label='#{type}']").html()
		if options 	
			$(".subTypes").html(options)
			$(".subTypes").parent().show()
		else
			$(".subTypes").empty()
			$(".subTypes").parent().hide()

它可以工作,但只有在我重新加载页面之后。如果我从通用link_to访问页面,那么CoffeScript似乎无法工作。因此,当导航到该页面时,我总是需要重新加载页面。使用link_to对页面的导航看起来像ajax,但我没有使用ajax。这是我的link_to:

代码语言:javascript
复制
<%= link_to "link", new_request_path %>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-11 17:24:50

我相信你在使用turbolinks。这样,您的jquery引导程序就会在您最初访问的页面上执行一次,并且不会与其他页面的DOM挂钩,因此您的回调不会赶上。

你有几个选择来处理这件事。

  1. 在布局头部的data-turbolinks-track='false'上使用javascript_tag属性。这样,js文件将与正文一起加载并在每个页面加载上执行。
  2. 将整个javascript_tag调用移动到body的底部。
  3. 使用jquery-turbolinks宝石。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28993043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档