Jquery.load()引入重复js导致ztree不可用

转载请注明出处:jiq?钦‘s
technical Blog

我的页面完成这样一个功能,点击页面左边的ZTree节点时利用jquery ajax请求后台action查询节点详细信息,然后在页面右边的div中利用Jquery的load函数加载节点的详细信息显示页面node.jsp。

备注:jquery load是jquery ajax中的一种功能,load可以方便快速的直接加载一个页面到指定div中,并且它可以带参数,load方法格式:load(url,data,function(response,status,xhr))

<body>
	<div class="container-fluid">
		<div class="row">
			<div class="col-md-4">
				<div class="panel panel-info bootstrap-admin-no-table-panel">
					<div class="panel-heading">
				        <div class="text-muted bootstrap-admin-box-title">配置列表</div>
				    </div>
					<div class="left pre-scrollable" style="height:560px">
						<ul id="configZtree" class="ztree" style="width:700px; overflow:auto;"></ul>
					</div>
				</div>
			</div>
	        <div class="col-md-7">
	        	<div id="configInfo"></div>
	        </div>
	        <div class="col-md-1"></div>
		</div>
	</div>
</body>

单击ztree节点的js响应函数:

//ztree单击事件
    function zTreeOnClick(event, treeId, treeNode) {
    	if(treeNode.level != 0)
    	{
    		//alert(getPathText(treeNode));
	        $.ajax({
	            type: "POST",
	            url: "DispNodeInfo.action",
	            data: {nodeId:treeNode.id,nodeName:treeNode.name},
	            dataType: "json",
	            success: function(data) {
	                $("#configInfo").load("nodeInfo.jsp?data="+data);
	            },
	            error: function() {
	            	$("#configInfo").load("error.jsp");
	            }
	        });
    	}
    };

这些都能正常工作,然后我的焦点放到ztree节点上时会出现新增子节点的悬浮按钮,效果如下:

这个按钮点击会去的div中的ztree对象,进行节点增加操作。

我直接聚焦并点击这个新增按钮没有任何问题,能正常新增子节点,但是当单击节点,让右边load节点详细信息之后,再去点击悬浮的新增字节点的按钮,则不起任何作用,并出现异常:

获取的ztree对象为空!!! 难道Jquery的load函数又问题???

于是我新增了一个空白的jsp页面来load,按照上面再操作一遍,发现能够正常新增,所以说是我这个node.jsp文件的问题,经过排查,发现是这个页面中再次引入了ztree的js文件的缘故:

<script type="text/javascript" src="JS/zTree/js/jquery.ztree.all-3.5.min.js"></script>

将其去掉,正常工作。

时间: 2024-10-11 07:34:09

Jquery.load()引入重复js导致ztree不可用的相关文章

JQuery Easyui引入easyui-lang-zh_CN.js后出现乱码的问题解决方法

最近使用Easyui做项目,发现引入easyui-lang-zh_CN.js单元后页面会出现乱码,无论设置<meta>.还是Response都不能解决问题.用记事本打开easyui-lang-zh_CN.js文件,里面的内容也是正常的啊,而且文件格式也是UTF8的.这个问题一度困扰了我很长时间. 后来一次无意中用eclips打开easyui-lang-zh_CN.js文件,发现里面的中文部分全部是乱码,这才明白,原来是这个文件本身有问题,于是用记事本打开这个文件,重新复制粘贴到eclips中再

jquery load()重复加载,多次加载 js 和css问题的解决办法

jquery load + div实现异步加载资源,出现重复js和css资源的重复加载,导致js失效或重复执行等问题: 调用load前执行语句: $.ajax({cache: false}) 关闭ajax缓存. 此方法已经过时 $.ajaxSetup ({ cache: false }); According to http://api.jquery.com/jQuery.ajaxSetup/ it's use isn't recommended. Try using $.ajax({cache

jQuery的ready与js的load事件的区别

摘自:http://www.cnblogs.com/see7di/archive/2011/07/15/2239677.html 为了理解这两个事件的异同,读者应该先了解HTML文档加载的顺序. DOM文档加载是按顺序执行的,这与浏览器的渲染方式有关系.一般浏览器渲染操作的顺序大致按如下几个步骤来完成.(1) 解析HTML结构.(2) 加载外部脚本和样式表文件.(3) 解析并执行脚本代码.(4) 构造HTML DOM模型.(5) 加载图片等外部文件.(6) 页面加载完毕. 具体说明如下.1. 执

自己编写jQuery动态引入js文件插件 (jquery.import.dynamic.script)

这个插件主要是结合jquery或者xhr异步请求来使用的,它可以把已经引入过的js文件记录在浏览器内存中,当下次再引入相同的文件就忽略该文件的引入. 当你用$.load("dir/my-page.jsp"); 或xhr.request("server/to-my-page");等异步请求加载html页面的时候,在页面中导入js文件用本插件进行引入的话, 那么其他请求的页面中也导入了和前面页面相当的js文件的情况下,那这些js文件就不需要重新引入.插件会自动忽略之前已

解决pjax重复加载js导致事件重复绑定的问题

个人博客 地址:http://www.wenhaofan.com/article/20180925232057 1.所有js统一在pjax容器外引入 在pjax容器外引入的js只会被引入一次,所以不会出现重复加载的问题,但是该方法仅适用于页面较少的情况,如果页面很多,那么会导致第一次访问时引入大量不一定会被适用到的js,效率低下. 2.将绑定事件和其他事件区分成两个js来引入 在pjax中判断是否已经引入绑定事件的js,如果已经引入则不再重复引入. 3.在js中添加代码判断是否已经被引入 目测采

jquery load加载页面内ajax返回的div不能响应页面js的问题的解决方案

1. 前言 由于项目需要,需要load一个页面并保持ajax返回的div能响应其页面内的JS的click事件.这个不是 解决用jquery load加载页面到div时,不执行页面js的问题 这类问题,因为并无这个问题存在(jquery版本:1.10.2.js). 2. 本质原因 假定页面内有$(.btn1).click(function(){})事件,你手动复制一个包含class为btn1的div到页面,然后会发现你点击那个div,并不会被响应,如果你在console执行$(.btn1)确实有包

WordPress引入css/js两种方法

WordPress引入css/js 是我们制作主题时首先面对的一个难点,任何一款主题都要加载自己的css,js,甚至很有可能还需要加载Jquery文件,网上方法特多,说法不一,我们今天借鉴wordpress官方最新的twentysixteen主题来学习总结一下WordPress引入css/js各种常用方法,以及最优化的加载方法. 其实网上的N种方法总结起来就两种:一.模板文件header.php中直接引入文件二.在主题的functions.php中通过WP自带的函数wp_enqueue_scri

JQuery 常用积累(六)ZTree

Web 项目或多或少都会有涉及到什么人员职称树,菜单树,组织机构树...... 历手三四个项目有大有小,采用的树前端都是 Ztree. 有些优秀的J2EE 框架将这些常用的组件都封装起来,作为模块化的组件提供给前端,这样固然是好,开发效率会提升几倍. 客户需求是什么,组件化往上一套,几分钟就能搭建起来. 但这样咱程序员真的就是搬砖的了,纯纯的重复性工作. 1. Ztree 主要的特点 ZTree v3.0 将核心代码按照功能进行了分割,不需要的代码可以不用加载 采用了 延迟加载 技术,上万节点轻

WordPress引入css/js方法总结

WordPress引入css/js方法很多,条件很多.如何全局加载,或仅在某些页面精准加载,什么时候需要先注册脚本再加载,本文希望找到最简单的方式,并给出探索更多方法的途径. 在前台加载css/js 用wp_enqueue_script()函数加载js,用wp_enqueue_style()加载css,加载资源的位置(action)只有一个——wp_enqueue_scripts. 用wp_enqueue_系列函数可以更好的处理脚本样式表的依赖关系,防止重复加载,以twentyfifteen主题