问题如下:
我今天做一个联动下拉框的时候,遇到了一个奇怪的问题,在ready方法里面注册的事件失效了!比如:$("#province").change(function(){........})当我改变id为province下拉框的值的时候,这个方法并没有执行!原因如下:
1.html部分代码
<select id="province">
<option value="default">请选择</option>
</select>
<select id="section">
<option value="default">请选择</option>
</select>
<select id="estate" name="id_area">
<option value="default">请选择</option>
</select>
2.部分js代码
$(document).ready(function(){
//发送一个AJAX请求 (获得全国省份信息)
$.ajax({
type:"post",
dataType:"xml",
url:"areaAction.do",
data:"action=getProvince",
success:function(data){
//需要追加的字符串
var appendHtml="";
//循环加载
$(data).find("node").each(function(i){
appendHtml+="<option value='"+$(data).find("node id").eq(i).text()+"'>"
+$(data).find("node name").eq(i).text()+"</option>";
}
)
//追加HTML代码
$("#province").append(appendHtml);
},
error:function(XMLResponse){
alert("获取省份信息失败");
}
});
当加载html页面的时候,我发送了一个AJAX请求,请求获得全国的省份信息。在
<select id="province">
<option value="default">请选择</option>
</select>
之间追加了一些选项。如果不发送这个请求,$("#province").change(function(){........})函数就会被触发,但是你一但发送,相当于就改变了id为province的下拉框,以前注册的change事件就失效了!至于原因,我也不是很清楚。不过如果这样写就可以:
$("#province").live("change",function(){.....});
live事件API文档解释如下
live( type, fn )
jQuery 1.3中新增的方法。给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件)。也能绑定自定义事件。
目前支持 click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout,
keydown, keypress, keyup。
还不支持 blur, focus, mouseenter, mouseleave, change,
submit
与bind()不同的是,live()一次只能绑定一个事件。
这个方法跟传统的bind很像,区别在于用live来绑定事件会给所有当前以及将来在页面上的元素绑定事件(使用委派的方式)。比如说,如果你给页
面上所有的li用live绑定了click事件。那么当在以后增加一个li到这个页面时,对于这个新增加的li,其click事件依然可用。而无需重新给
这种新增加的元素绑定事件。
|
我的理解就是:无论页面是否会局部刷新,这样绑定的话,这个事件始终有效,而且还对新增加的标签有效果!
分享到:
- 2009-11-20 21:29
- 浏览 5352
- 评论(3)
- 论坛回复 / 浏览 (2 / 2334)
- 查看更多
相关推荐
今天在写JQUERY时遇到个问题:当使用脚本动态添加元素xxx时,但事件$(“.x .y”).click(function)…失效问题。 刚开始网上找到了用live函数,方法如下: 事件绑定:$(“.x .y”).click(function) 需改为: 代码如下:...
这个js是一个增强页面效果的功能,但是用了它,jquery在有的页面可以用,有的页面就失效了,用firefox的firebug调试,发现在有的页面会报错,获取分页的位置的地方会出错。后来发现确实只要没有分页的地方jquery就...
1. 在jquery中append元素,如果该元素中有id值并且绑定事件,那么该id事件会失效,必须刷新一下才能使用。 2.解决办法: ...以上这篇解决jquery appaend元素中id绑定事件失效的问题就是小编分享给大家的全
JqueryMobile常见问题整理 跳转时重复调用pageinit方法的解决办法 页面跳转后样式丢失js失效
jQuery打印插件jqprint,jquery.jqprint-0.3.js 下载,内包含使用示例,下载解压可直接在浏览器打开使用。 jQuery打印插件jqprint,jquery.jqprint-0.3.js 下载,内包含使用示例,下载解压可直接在浏览器打开使用。 ...
今天遇到个问题,在dialog中放了服务器端的空间dropdownlist,但是写selectindexchange事件却怎么也触发不了,然后就在网上搜,终于看到有个哥们解决了这个问题,真的谢谢他。
下面小编就为大家带来一篇Jquery对新插入的节点 绑定Click事件失效的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家分享一篇jquery radio 动态控制选中失效问题的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
①jQuery中的$(doucument).ready()事件 ready(fn)是jQuery事件模块中最重要的一个函数。这个方法可以看作是对[removed]注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪时立刻调用所绑定的函数,而几乎所有...
在使用jquery编写图片滚动效果时,发现必须把图片滚动部分放到单独的页面里,然后在首页用<iframe>调用才能正确显示,并且不提示js错误。最后试验无数次,结果发现是jquery所在文件的编码和网页编码不同,全部...
解决 jquery.uploadify.js 在ie9 下 二次打开失效问题等问题
应用场景是:iframe页面没有滚动条,在父窗体中出现滚动条,锚点标记就会失效,因为,锚点是根据当前窗口滚动条滚动窗口的,成为子窗体后没有了滚动条,自然不会滚动。 解决办法是:用js判断页面是否被嵌套,用js...
今天小编就为大家分享一篇解决jQuery使用append添加的元素事件无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
xhtml jQuery几个经典案例,有jQuery UI 和 jQuery ZOOM. 还有一些框架示例
在做项目中发现,在使用了UpdatePanel的地方,局部刷新后,jquery失效了。 后来网上一查,才发现,jquery中的ready事件会在DOM完全加载后运行一次,而当我们实用了UpdatePanel,它只局部更新,并未重新加载页面所有...