在单独的js文件中开发Jquery的问题
2015-02-08 16:13
183 查看
昨天整了很久的一个问题:尝试在单独的.js文件中绑定一个Click事件。一个看似极其简单的问题,对于我这个不熟练的人来说,收获颇多。
<li><a id="login" name = "login" href="http://xxxx" >登录</a></li>
上面这个a,要跳转到登录页面。如果直接写href就像上面这样,那么可以直接实现。
现在是要把他用Jquery写在单独的js文件中中,费了一番周折。第一个问题就是,js文件中如何取到项目根目录地址?也就是http://localhost:8080/xxx。借鉴了公司的项目,发现可以这么来。若在加载这个js文件的jsp文件中引用了这样的定义:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
那么可以将这个ctx赋值给js变量: var ctx = $("#ctx").context.URL; 此时ctx即为 http://localhost:8181/projectname.在文件中就可以使用了。
搞定了这个以后,下一个问题又来了。如何跳转?我的第一个尝试是:
jsp文件: <li><a id="login" name = "login" onclick="tologin()" >登录</a></li>
这样写以后自己觉得不好:如果当前页面有很多个链接需要跳转(比如主页的About, Login, News and so on),那么维护起来还要在茫茫的html代码中找来改,麻烦。所以决定全写在js文件中。所以Jsp中就不用写什么方法了,保持这样就可以: <li><a id="login" name = "login" href = "" >登录</a></li>
那么在js文件中怎么去写? 我最先的尝试是:
$(function() {
("#loginbtn").click(function(){
$.get(ctx + 'admin‘);
}
});
用阿贾克斯的get去访问。由于框架是SpringMVC,这个就有问题了。后端返回一个ModelAndView,会被ajax需要定义的success或者error回调,这样视图解析策略就被干掉了(自己的理解)。 所以无法正常跳转。接下来又改:
(function() {
$("#loginbtn").attr("href", ctx + "admin");
});
还是不能实现,找了半天没找到问题。结果是改来改去漏掉了前面的$.这样就不是jquery的方法块的,而变成了原始的js,这样在加载时这个方法只是定义了,却没被调用(除非写成自调用函数)。加上后,就Ok了。个人认为这样写跳转比较方便维护,代码也很少,没有多余。
<li><a id="login" name = "login" href="http://xxxx" >登录</a></li>
上面这个a,要跳转到登录页面。如果直接写href就像上面这样,那么可以直接实现。
现在是要把他用Jquery写在单独的js文件中中,费了一番周折。第一个问题就是,js文件中如何取到项目根目录地址?也就是http://localhost:8080/xxx。借鉴了公司的项目,发现可以这么来。若在加载这个js文件的jsp文件中引用了这样的定义:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
那么可以将这个ctx赋值给js变量: var ctx = $("#ctx").context.URL; 此时ctx即为 http://localhost:8181/projectname.在文件中就可以使用了。
搞定了这个以后,下一个问题又来了。如何跳转?我的第一个尝试是:
jsp文件: <li><a id="login" name = "login" onclick="tologin()" >登录</a></li>
这样写以后自己觉得不好:如果当前页面有很多个链接需要跳转(比如主页的About, Login, News and so on),那么维护起来还要在茫茫的html代码中找来改,麻烦。所以决定全写在js文件中。所以Jsp中就不用写什么方法了,保持这样就可以: <li><a id="login" name = "login" href = "" >登录</a></li>
那么在js文件中怎么去写? 我最先的尝试是:
$(function() {
("#loginbtn").click(function(){
$.get(ctx + 'admin‘);
}
});
用阿贾克斯的get去访问。由于框架是SpringMVC,这个就有问题了。后端返回一个ModelAndView,会被ajax需要定义的success或者error回调,这样视图解析策略就被干掉了(自己的理解)。 所以无法正常跳转。接下来又改:
(function() {
$("#loginbtn").attr("href", ctx + "admin");
});
还是不能实现,找了半天没找到问题。结果是改来改去漏掉了前面的$.这样就不是jquery的方法块的,而变成了原始的js,这样在加载时这个方法只是定义了,却没被调用(除非写成自调用函数)。加上后,就Ok了。个人认为这样写跳转比较方便维护,代码也很少,没有多余。
相关文章推荐
- jQuery与开发的相关js文件包含顺序
- jQuery 中插件的使用与开发-启用Visual Studio 对jQuery的智能感知(含 jQuery1.3.2 for VS 的智能提示js文件)
- web开发 js、jQuery文件上传限制类型
- 单独将ajax请求放入js文件中URL问题
- jQuery与开发的相关js文件包含顺序
- jquery.form.js ajax上传文件问题
- Rails : css或js文件无法成功预编译或调用jquery类插件时预编译问题
- jquery库或JS文件在eclipse下报错问题解决方法
- 微信开发,解决jquery.qrcode.min.js生成二维码长按不识别问题
- jQuery 中插件的使用与开发---附全部源码(含 jQuery1.3.2 for VS 的智能提示js文件)
- jquery.form.js ie 下下载文件已经ie8失效问题解决方案
- 在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
- 关于Eclipse项目中加入jquery-1.x.js文件报错问题
- jQuery 中插件的使用与开发---附全部源码(含 jQuery1.3.2 for VS 的智能提示js文件)
- Asp.net 组件开发中web资源文件(图片、js)的调用问题
- 关于jquery.form.js插件的无刷新上传文件使用的问题
- ecshop的transport.js文件和Jquery冲突问题
- 学习vue-cli时需要引入外部js库文件(如jquery)的问题,百度后解决了,再次备忘一下
- window.location.href 放置在单独的JS文件中使用时问题
- 关于Eclipse项目中加入jquery-1.x.js文件报错问题