0 0

jquery触发select的change事件失效3

jquery在页面第二次加载的时候触发不了下拉框的change事件,启动tomcat,地址栏输入http://localhost:8080/aa/list.jsp时能够触发下拉框的change事件,但是从servlet过来后就不起作用了,怎么回事?
-------------------
list.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>信息界面</title>
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript">
	$(document).ready(function(){
		
		$("#sel_emp").live('change',function(){
			var value = $('#sel_emp').val();
			alert(value);
			window.location = "/aa/servlet/Test1Servlet";
		});
		
	});

</script>
</head>
<body>
<select id="sel_emp">
	<option value="1">编号</option>
	<option value="2">姓名</option>
</select>
	<table border="1">
		<tr>
			<th>编号</th>
			<th>姓名</th>
		</tr>
		<c:forEach items="${list }" var="element">
		<tr>
			<td>${element.uid }</td>
			<td>${element.username }</td>
		</tr>
		</c:forEach>
	</table>
</body>
</html>

------------------------servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
		Employee employee_01 = new Employee();
		employee_01.setUid("1");
		employee_01.setUsername("张三");
		
		Employee employee_02 = new Employee();
		employee_02.setUid("2");
		employee_02.setUsername("李四");
		
		List<Employee> list = new ArrayList<Employee>();
		list.add(employee_01);
		list.add(employee_02);
		
		request.setAttribute("list", list);
		
		request.getRequestDispatcher("/list.jsp").forward(request, response);
		

问题补充:
Rainbow702 写道
你是指,在从servlet 跳转至该页面后,点击下拉菜单,选择一个值的时候,不会触发这下面这个:
引用
# function(){ 
#          
#         $("#sel_emp").live('change',function(){ 
#             var value = $('#sel_emp').val(); 
#             alert(value); 
#             window.location = "/aa/servlet/Test1Servlet"; 
#         }


是么?

是的

问题补充:
Rainbow702 写道
你是指,在从servlet 跳转至该页面后,点击下拉菜单,选择一个值的时候,不会触发这下面这个:
引用
# function(){ 
#          
#         $("#sel_emp").live('change',function(){ 
#             var value = $('#sel_emp').val(); 
#             alert(value); 
#             window.location = "/aa/servlet/Test1Servlet"; 
#         }


是么?

就是第二次进入页面的时候

问题补充:
Rainbow702 写道
你是指,在从servlet 跳转至该页面后,点击下拉菜单,选择一个值的时候,不会触发这下面这个:
引用
# function(){ 
#          
#         $("#sel_emp").live('change',function(){ 
#             var value = $('#sel_emp').val(); 
#             alert(value); 
#             window.location = "/aa/servlet/Test1Servlet"; 
#         }


是么?

直接从servlet过来也不得行,但是如果用response.sendRedirect就没问题,那样我就得用request.getSession.setAttribute了,反正是第二次进入页面就触发不了

问题补充:
Rainbow702 写道
你试试在 ready方法里,只写一句 alert 来测试一下,看看从servlet中forward过来的时候,会不会再次触发 ready 事件。

还是不行,只要是第二次进页面就触发不了

问题补充:
Rainbow702 写道
你是从list.jsp页面提交一个请求给servlet 处理,处理完了之后又让这个servlet 跳回至这个list.jsp,是么?

是这样的,我就是写个简单的jquery,刚学,就来个这个问题,我晕哦

问题补充:
Rainbow702 写道
引用
是这样的

那你想这过程当中,list.jsp 被加载了几次呢?一次哇,只有一次ready事件被触发。你把 live 改为 bind 试试,看看能不能再次触发呢。
$(document).ready(function(){
  $("sel_emp").bind({
    change:function(){var value = $('#sel_emp').val();  alert(value);}
  });
});

一样不行

问题补充: 悲催啊,这么简单一个东西居然不得行

问题补充:
Rainbow702 写道
引用
悲催啊,这么简单一个东西居然不得行
我之前基本使用原生的JS,框架之类的用的不多,帮不了你啊,惭愧。

谢谢哈,我去找看

问题补充:
AngelAndAngel 写道
  改成 
$("#sel_emp").change(function(){   
           var value = $(this).val();   
            alert(value);   
            window.location = "/aa/servlet/Test1Servlet";   
        });

还是一样的效果

问题补充:
AngelAndAngel 写道

路径问题
改成
<%
String path=request.getContextPath();
%>
<script type="text/javascript" src="<%=path%>/js/jquery-1.4.4.min.js"></script>

天啊,哥,我崇拜你,崇拜的崇,崇拜的拜
2011年9月02日 10:17

9个答案 按时间排序 按投票排序

0 0

采纳的答案


路径问题
改成
<%
String path=request.getContextPath();
%>
<script type="text/javascript" src="<%=path%>/js/jquery-1.4.4.min.js"></script>

2011年9月02日 13:31
0 0

 

2011年9月02日 13:35
0 0

  改成 

$("#sel_emp").change(function(){   
           var value = $(this).val();   
            alert(value);   
            window.location = "/aa/servlet/Test1Servlet";   
        });

2011年9月02日 13:28
0 0

引用
悲催啊,这么简单一个东西居然不得行
我之前基本使用原生的JS,框架之类的用的不多,帮不了你啊,惭愧。

2011年9月02日 12:50
0 0

引用
一样不行

那你咨询一下 AngelAndAngel 吧。你随便找个问题,就可以找到他的踪影。

2011年9月02日 12:49
0 0

引用
是这样的

那你想这过程当中,list.jsp 被加载了几次呢?一次哇,只有一次ready事件被触发。你把 live 改为 bind 试试,看看能不能再次触发呢。
$(document).ready(function(){
  $("sel_emp").bind({
    change:function(){var value = $('#sel_emp').val();  alert(value);}
  });
});

2011年9月02日 12:26
0 0

你是从list.jsp页面提交一个请求给servlet 处理,处理完了之后又让这个servlet 跳回至这个list.jsp,是么?

2011年9月02日 12:11
0 0

你试试在 ready方法里,只写一句 alert 来测试一下,看看从servlet中forward过来的时候,会不会再次触发 ready 事件。

2011年9月02日 11:52
0 0

你是指,在从servlet 跳转至该页面后,点击下拉菜单,选择一个值的时候,不会触发这下面这个:

引用
# function(){ 
#          
#         $("#sel_emp").live('change',function(){ 
#             var value = $('#sel_emp').val(); 
#             alert(value); 
#             window.location = "/aa/servlet/Test1Servlet"; 
#         }


是么?

2011年9月02日 11:22

相关推荐

Global site tag (gtag.js) - Google Analytics