刷新javascript而不重新加载页面
Refresh javascript without reloading the page
我遇到了一个问题,我使用了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");
});
- 在新的浏览器选项卡上加载新的aspx页面后调用JavaScript函数
- 更改css链接并等待加载新的css
- 如何在Ajax加载新内容时停止JavaScript执行
- 当在ng视图中加载新路由时,Tabbing(tabindex)针对错误的元素
- 如何使用输入数据加载新的extjs图表
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 当用户到达页面右侧时加载新内容
- 数据表 AJAX 筛选器重新加载数据
- 超链接单击以加载新页面并执行JavaScript
- 单击时加载新的 SVG
- 在RadWindow中加载新页面,然后从加载的窗体中关闭窗口
- ajax在页面刷新之前不会加载新的sql结果
- 谷歌地图API-在从ajax页面加载新数据之前清除标记、多段线
- 使用Ajax加载页面,并在必要时加载新脚本
- 加载新页面时的过渡效果,AJAX
- Ajax没有正确加载新页面
- 正在加载新的Javascript,但正在调用旧的Javascript.MVC
- 咕噜咕噜的手表:实时加载重新加载落后 1 步....
- 我怎么能有一个花哨的盒子一样的弹出体加载,但与cookie不连续加载重新加载