jquery笔记

最近在改bug,涉及到很多前端验证的问题,整理了一下。


1.bind使用:

bind(type,[data],fn)为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数。这个事件处理函数会接收到一个事件对象,可以通过它来阻止(浏览器)默认的行为。如果既想取消默认的行为,又想阻止事件起泡,这个事件处理函数必须返回false。多数情况下,可以把事件处理器函数定义为匿名函数(见示例一)。在不可能定义匿名函数的情况下,可以传递一个可选的数据对象作为第二个参数(而事件处理器函数则作为第三个参数),见示例二。
返回值 : jQuery
参数 :
type (String) : 事件类型
data (Object) : (可选) 作为event.data属性值传递给事件对象的额外数据对象
fn ( Function) : 绑定到每个匹配元素的事件上面的处理函数
示例 : 当每个段落被点击的时候,弹出其文本。
jQuery 代码:
$("p").bind("click", function(){
  alert( $(this).text() );
});
--------------------------------------------------------------------------------
你可以在事件处理之前传递一些附加的数据。
jQuery 代码:
[code="java"]
function handler(event) {
  alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)

--------------------------------------------------------------------------------
通过返回false来取消默认的行为并阻止事件起泡。
jQuery 代码:
[code="java"]
$("form").bind("submit", function() { return false; })

--------------------------------------------------------------------------------
通过使用 preventDefault() 方法只取消默认的行为。
jQuery 代码:
[code="java"]
$("form").bind("submit", function(event){
  event.preventDefault();
});

--------------------------------------------------------------------------------
通过使用 stopPropagation() 方法只阻止一个事件起泡。
jQuery 代码:
$("form").bind("submit", function(event){
  event.stopPropagation();
});



=====================华丽的分割线===============================================

2.ajax 提交问题:

$.ajax({
			type:"get",
			url:"del/checkDeleteForIds.do",
			data:value,
			complete:function(data){
				var aa = eval("("+data.responseText+")");
				if(aa.msg==0) {//无用户
					tipShow('#delMsgTip');
				}else if (aa.msg==2) {
					$("#DeleteWithUserButton").attr("style","display:none");
					tipShow('#alertNoSelect');
				}else {//有用户
					$("#roleNames").text(aa.roleNames);
					$("#DeleteRolesButton").attr("style","display:none");
					tipShow('#delMsgTipWithUsers');
				}
			}	
		});



上面用success的时候就不行,改为complete就可以了。有点诡异,现在还不知道为什么。

---------------------
$("#roleNames").text(aa.roleNames);
//这个方法可以将后台传过来的数据赋给id=roleNames的dom。


-----------------

$("#DeleteRolesButton").attr("style","display:none");
//attr 将属性值赋给dom对象。


---------------------

对应后台java代码:springMVC 返回json对象
@RequestMapping("/role/del/checkDeleteForIds.do")
	public void checkDeleteForIds(int[] ids, HttpServletRequest request,HttpServletResponse response, ModelMap model) throws IOException {
		if(ids==null) {
			ResponseUtils.printJson(response,"{success:true,msg:2}");
			return;
		}
		String roleNames="";
		for(int i=0;i<ids.length;i++) {
			if(pmsRoleBO.checkUserByRoleId(ids[i])) {
				roleNames = pmsRoleBO.getNameByRoleIds(ids) + " ";
			}
		}
		if(roleNames.equals("")) {//所选角色下无用户
			ResponseUtils.printJson(response,"{success:true,msg:0}");
		} else {//角色下有用户
			model.addAttribute("roleNames", roleNames);
			ResponseUtils.printJson(response,"{success:true,msg:1,roleNames:'"+roleNames+"'}");
		}
	}


public static void printJson(HttpServletResponse response, String text)
	throws IOException {
     print(response, "application/json;charset=UTF-8", text);
}


private static void print(HttpServletResponse response, String contentType,
			String text) throws IOException {
		response.setContentType(contentType);
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		PrintWriter pw = response.getWriter();
		pw.write(text);
		pw.close();
	}


===================================华丽的分割线==================================

还是分开记录吧,每个问题开一个文章,这样好找些。


你可能感兴趣的:(jquery)