0

问题

我有一个来自文件jquery.tagsinput的自定义效果,该效果在单击链接后不起作用,而如果我刷新页面,它将被修复。

测试解决方案

我尝试了以下方法:

  1. 禁用涡轮链接
  2. 为准备好的或加载 js 函数搜索文件 - 不存在

描述

该文件jquery.tagsinput具有以下结构

(function($) {
   // Different functions and javascript staff
 })(jQuery);

该函数包括我需要执行的不同 javascript 函数,如果我刷新浏览器,它们就会起作用。例如。

$.fn.tagsInput = function(options) { 
   // Some code
 },options);

如果我刷新浏览器,我可以看到相关的 html 输入字段有两个事件处理程序:

  1. jquery.tagsinput

        $(data.holder).bind('click',data,function(event) {
            $(event.data.fake_input).focus();
        });
    
  2. jquery.js

    if ( !( eventHandle = elemData.handle ) ) { 
    // Some Code    
    };
    
  3. 我的edit.html.erb观点

    <%= f.text_field :skill_list, :class => "tagsinput form-control", :id => "tagsinput", value: f.object.skill_list.map { |t| t}.join(', ') %>
    

生成以下html代码:

在此处输入图像描述

非常感谢

法布里齐奥·贝托廖

4

1 回答 1

0

这是我的application.js,它包括以下文件:

//= require jquery.tagsinput
//= require form-component
//= require scripts

Jquery.tagsinput 没有准备好的功能,但是 script.js 功能有,当我编辑 script.js 准备好的功能时,问题就开始了。

script.js有以下代码:

function initializeJS() {
     // Some js code
}
jQuery(document).ready(function(){
    initializeJS();
});

问题可能是由我对与gemscript.js兼容的 ready 函数所做的编辑引起的(而不是使用i would use )turbolinks.save.on('turbolinks:load'..

jQuery(document).on('turbolinks:load', function(){
    initializeJS();
});

一旦我更正了那条线,问题就解决了,但我不了解它被修复的真正原因。我没有禁用涡轮链接。我将来会尝试了解真正的原因并发表解释。

于 2017-02-19T09:22:08.050 回答