刷新javascript而不重新加载页面

Refresh javascript without reloading the page

本文关键字:加载 新加载 javascript 刷新      更新时间:2023-09-26

我遇到了一个问题,我使用了JavaScript中的自定义滚动,它将根据JS计算块的宽度和高度。问题是,当视口缩小时,特定的块会被隐藏,因此如果窗口大小增加,带有自定义滚动的块将不会显示,因为它无法计算当前的宽度和高度。如果我刷新页面,它工作正常。有什么可以在不重新加载页面的情况下刷新这个特定的块吗?http://narkosi.com/test_copy这是该网站新副本的链接。尝试将其调整为移动视图,然后返回到桌面版本,您会注意到左右列被隐藏,但如果刷新页面,效果会很好。提前谢谢。

尝试$( window ).resize();函数,它将在视口更改时运行

$( window ).resize(function() {
  your code
});

查看更多详细信息https://api.jquery.com/resize/

对于纯javascript,请使用onresize="myFunction()" on body查看更多详细信息http://www.w3schools.com/jsref/event_onresize.asp

答案存在于插件的文档中

API一般信息(来自文件)

jcf.replaceAll( [context] )-替换整个页面上的元素。可选参数是要使用的上下文(可以是CSS选择器或DOM/jQuery对象)。在元素上添加类jcf-ignore以防止其自定义。

jcf.replace( elements [, moduleName] [, customOptions] )-更换特定元件或多个元件

jcf.destroyAll( [context] )-销毁所有自定义表单元素实例并恢复原始表单元素。可选参数是要使用的上下文(可以是CSS选择器或DOM/jQuery对象)。

jcf.destroy( elements )-销毁某些元素或多个表单元素。应应用于本机窗体控件。

所以你可以只做destroy,然后再做replace(我试过在你的网站上做,它很有效)。

$(window).resize(function() {
    /* I do this for all elements 
       but it's better for you to refresh only the elements you need to */
    setTimeout(function() {
       jcf.destroyAll();
       jcf.replaceAll();
    }, 0);
});

为什么需要setTimeout?嗯,没有它就不行;)

你可以在这个问题中找到一个很好的解释——为什么setTimeout(fn,0)有时很有用?

简而言之:

解决方案是";暂停";JavaScript执行,让渲染线程跟上进度。这就是setTimeout()在超时为0时进行的效果

如果以上代码不起作用,请尝试

$([document, window]).on('ready resize', function (e) {
alert("hi");
});