jQuery 模式对话框在刷新后的第一页上工作正常,但在此之后的任何其他页面上都无法正常工作,除非刷新

jQuery Modal Dialog works fine on the first page after refresh, but not on any other pages after that unless refreshed

本文关键字:工作 刷新 常工作 对话框 模式 第一页 任何 在此之后 jQuery 其他      更新时间:2023-09-26

好的,所以我有这个jQuery模式对话框来提醒非注册用户在尝试访问仅限用户的操作时注册。刷新后,对话框工作正常,可以无限期关闭和打开...在该页面上。一旦页面切换,除非再次刷新页面,否则模式不起作用。

我将模态绑定到轨道,如果其他语句,例如

<% if signed_in? %>
  <a href="User only page">
<% else %>
  <div class="modalstart">
<& end %>

但是,我在没有语句的情况下尝试了它,并且问题仍然存在,所以我猜这是jQuery问题。

这是我的模式对话框代码的代码:

$(window).bind("load", function() {
$(document).ready(function() {
  $('#modalresult').dialog({ width: 550, height: 300, autoOpen: false, modal: true,   
                                                               resizable: false });
  $( ".modalstart" ).click(function() {
    $( "#modalresult" ).dialog( "open" );
    return false;
   });
  })
});

并且对话框绑定的div 设置为在调用之前不显示,如果它有任何后果:

<div id="modalresult" style="display:none"></div>

模态框有一个注册表单和用于关闭它的 reqular X。

我在想,可能是jQuery以某种方式认为当用户切换页面时模式已经在使用中吗?提前感谢您的任何帮助或想法。

好吧,事实证明涡轮链接(rails 4.0)以某种方式干扰了jQuery代码,阻止了$(document).ready()执行。这导致jQuery在刷新后用户导航的任何后续页面上不起作用。

解决方案是这个宝石 https://github.com/kossnocorp/jquery.turbolinks

我把它留给其他有同样问题的人,以节省时间。

非常感谢所有试图帮助的人。我非常感谢。

由于看起来您坚持使用默认的jQueryUI行为(例如,您正在使用内置的" x"关闭对话框),我认为只需清理javascript即可正常工作。我认为,这种$(window).bind("load", function() {肯定会引起一些问题。

.JS

$(function() {
    $('#modalresult').dialog({
        width: 550, 
        height: 300, 
        autoOpen: false, 
        modal: true,
        resizable: false 
    });
    $('.modalstart').click(function() {
        $('#modalresult').dialog('open');
    });
});

你不应该做任何其他事件绑定,jQuery UI将"正常工作"。

虽然它不能模拟你的确切情况,但我在这里创建了一个简单的小提琴:http://jsfiddle.net/chucknelson/WVmx6/

window.bind 破坏了它,我认为您的特定问题可能与此有关。