gpt4 book ai didi

javascript - 点击 url 后 Masonry 不工作

转载 作者:行者123 更新时间:2023-12-03 07:25:34 32 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我尝试实现 Masonry。我遇到的问题是,当我单击链接(图像)时,Masonry 不起作用,但如果单击后刷新页面,它就会起作用。有任何想法吗?谢谢

这是网站:https://salty-waters-72129.herokuapp.com/images

代码:

<p id="notice"><%= notice %></p>
<head>

<script src="/assets/jquery.swipebox.js"></script>
<link rel="stylesheet" href="/assets/swipebox.css">
<meta name="viewport" content="width=device-width,initial-scale=1.0">

<link rel="stylesheet" href="/assets/responsive.css" media="screen and (max-width: 900px)" charset="utf-8">

</head>
<body>
<h1>Listing Images</h1>

<div id='masonry'>
<% @images.each do |image| %>
<%= link_to image.image_url.to_s,class: "swipebox" do %>
<div class="hov col-lg-4 col-md-4 col-sm-6 col-xs-12">
<div class="hovereffect">
<%= image_tag image.image_url.to_s, :class => "img-responsive" %>
<div class="overlay">
<h2><%= image.name %></h2>
</div>
</div>
</div>
<% end %>
<% end %>
</div>
<script src="/assets/masonry.pkgd.min.js"></script>
</body>

<script type="text/javascript">
$(window).load(function() {
var container = document.querySelector('#masonry');
var msnry = new Masonry( container, {
columnWidth: '.hov',
itemSelector: '.hov'
});
});
;( function( $ ) {
$( '.swipebox' ).swipebox();
} )( jQuery );
</script>

最佳答案

问题不在于砖石,而在于 $(window).load(...)当您单击 Images 时,阻止不起作用.

这是因为Images链接点击是用 javascript 处理的,它不会导致整个页面重新加载,而是向服务器发出 ajax 请求并替换页面内容。这边$(window).load()未触发。

检查您的js application code ,ajax请求是从fetchReplacement = function(url, onLoadFunction, showProgressBar) {...发送的 block 。

看起来此代码属于 turbolinks.js , here与您的代码相同。

如果您实际上并不需要这个 Turbolinks 库 - 只需将其删除即可解决问题。如果您需要它 - 检查它的文档,您应该能够订阅页面加载事件(它在 ajax 响应处理程序中执行 return triggerEvent(EVENTS.LOAD) )并在那里初始化 masonry 。

关于javascript - 点击 url 后 Masonry 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36020794/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com