jquery 主动触发clickclick 多次绑定,多次触发,怎么清除历史绑定事件

下次自动登录
现在的位置:
& 综合 & 正文
绑定一个按钮click事件后,第一次点击后,一切正常,第二次点击,竟然执行两次,以后越来越多
绑定一个按钮click事件后,第一次点击后,一切正常,第二次点击,竟然执行两次,以后越来越多, 后来查看文档发现
jquery click
不是 替换原有的function
而是接着添加,所以才会执行次数越来越多。 这有就可以在添加之前 先将按钮 click 函数置空,然 后再添加。 解绑定方法
$("").unbind('click');
&&&&推荐文章:
【上篇】【下篇】16:24 提问
js/jquery中绑定的click事件只能执行一次,不能重复执行,再次点击没有效果
&!DOCTYPE html&&br&
.dt-main-p2{&br&
padding-right: 2&br&
line-height: 1.3&br&
overflow:&br&
padding-left: .5&br&
max-height: 100%;&br&
.dt-main-zhankai{&br&
padding-left: 3.2&br&
line-height: 0;&br&
color: #095f8a;&br&
display:&br&
我的滑板鞋我的滑板我的滑板鞋我的滑板鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板我的滑板鞋我的滑板我的滑板鞋我的滑板鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板我的滑板鞋我的滑板鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋
11我的滑板鞋我的滑板我的滑板鞋我的滑板鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋鞋我的滑板123我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋我的滑板鞋鞋我的滑板鞋我的滑板鞋
window.onload = function(){
$(".dt-main-p2").each(function(){
var dtheight = $(this).height();
if( dtheight & 95){
$(this).css("max-height","95px");
$(this).next(".dt-main-zhankai").css("display","block");
$(this).next(".dt-main-zhankai").click(function(){
$(this).prev(".dt-main-p2").css("max-height","100%");
$(this).html("收起");
$(this).click(function(){
$(this).prev(".dt-main-p2").css("max-height","95px");
$(this).html("展开");
按赞数排序
在展开后,把收起的事件覆盖了,就一直是展开的事件了。
window.onload = function(){ $(".dt-main-p2").each(function(){ var dtheight = $(this).height();
if( dtheight & 95){ $(this).css("max-height","95px");
$(this).next(".dt-main-zhankai").css("display","block");
$(this).next(".dt-main-zhankai").click(function(){
changezhankai(this)
function changezhankai(me){
if($(me).html()=='收起'){
$(me).prev(".dt-main-p2").css("max-height","95px");
$(me).html("展开");
$(me).prev(".dt-main-p2").css("max-height","100%");
$(me).html("收起");
其他相关推荐jQuery事件重复绑定示例及解决方法
jQuery嵌套事件绑定时,如果逻辑处理不当,有时会出现事件重复绑定的问题,例如下面的例子。
点击&添加文本框&按钮时,会在div中新增一个textarea,同时使用bind方法为class为demo-textarea的元素绑定click事件
jQuery事件重复绑定Demo,点击&新增文本框&按钮追加textarea
点击textarea弹出提示,重复添加时会重复绑定
第n次新增之后,textarea在点击时会重复弹出n次提示。
添加文本框
相关代码如下所示:
$(document).ready(function(){
$("#add-btn").on("click",function(){
$("#first-p").after('&p id="demo-p"&&textarea class="demo-textarea"&点击textarea弹出提示&/textarea&&/p&');
$("#demo-div").find(".demo-textarea").bind("click",function(){
alert("Textarea Clicked!");
&div id="demo-div" style="border:solid 1padding:5px 10"&
&p id="first-p"&jQuery事件重复绑定Demo,点击&新增文本框&按钮追加textarea;&br /&
点击textarea弹出提示,重复添加时会重复绑定&/p&
&p&&button id="add-btn" title="点我添加一个文本框"&添加文本框&/button&&/p&
事件重复绑定到的简单解决方法:
事件绑定嵌套时,内层事件绑定前执行ubind方法解除绑定,上例中的代码变更为:
$(document).ready(function(){
$("#add-btn").on("click",function(){
$("#first-p").after('&p id="demo-p"&&textarea class="demo-textarea"&点击textarea弹出提示&/textarea&&/p&');
$("#demo-div").find(".demo-textarea").unbind("click").bind("click",function(){
alert("Textarea Clicked!");
代码修改后,效果如下:
点击&新增文本框&按钮追加textarea
点击textarea弹出提示,重复添加时不会重复绑定
第n次新增之后,textarea在点击时只会弹出1次提示。
添加文本框
实际上,上例使用下面的代码更为妥当:
$(document).ready(function(){
$(document).on("click", "#demo-div .demo-textarea", function(){
alert("Textarea Clicked!");
$("#add-btn").on("click", function(){
$("#first-p").after('&p id="demo-p"&&textarea class="demo-textarea"&点击textarea弹出提示&/textarea&&/p&');
效果如下:
点击&新增文本框&按钮追加textarea
点击textarea弹出提示,重复添加时不会重复绑定
第n次新增之后,textarea在点击时只会弹出1次提示。
添加文本框
本文链接:请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。
如果您喜欢这篇博文,欢迎您捐赠书影博客:
没有类似日志
欢迎来到的博客
周一周二周三周四周五周六周日
262728293031在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
问题描述在开发一个手机网站的时候,
使用了jquerymobile的js,
以便手机网站支持触摸屏左右拖动的事件处理,
结果上述功能做好了,
却发现原有的click点击事件统统都会被执行两次。详细代码代码很简单,
示例如下:&!DocType html&
&title&jquerymobile click triggered twice ?&/title&
&meta charset=&utf-8&&
&meta name=&viewport& content=&width=device-width, initial-scale=1&&
&h1&奇怪了?!!&/h1&
&p&Some content here.&/p&
&p&&img id=&test& src=&/images/crazy.jpg& alt=&Click me&&&/p&
&script src=&/jquery-1.8.2.min.js&&&/script&
&script src=&/mobile/1.2.0/jquery.mobile-1.2.0.min.js&&&/script&
var i = 0;
$(document).bind('pageinit', function() {
$('#test').bind('click', function(e) {
alert('clicked: ' + i);
&/html&补充遇到问题的环境系统:windows XP 和 android 2.3浏览器:Firefox 最新版,android 2.3自带的chrome用html5,引入jquery 1.8和jquerymobile 1.2.0求助哪位仁兄有遇到过类似的问题,
且有解决的话,
帮忙告知解决方案,
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先,我说解决办法,只需要把你所有的script内容放到head里即可&!DocType html&
&title&jquerymobile click triggered twice ?&/title&
&meta charset=&utf-8&&
&meta name=&viewport& content=&width=device-width, initial-scale=1&&
&script src=&/jquery-1.8.2.min.js&&&/script&
&script src=&/mobile/1.2.0/jquery.mobile-1.2.0.min.js&&&/script&
var i = 0;
$(document).bind('pageinit', function() {
$('#test').bind('click', function(e) {
alert('clicked: ' + i);
&h1&奇怪了?!!&/h1&
&p&Some content here.&/p&
&p&&img id=&test& src=&/images/crazy.jpg& alt=&Click me&&&/p&
&/html&然后,我说说思路,这个问题真的很奇葩,一般人还真不知道为什么会这样。但是我在调试的时候发现,你的js居然加载了两遍!这就是为什么它会执行两次,因为pageinit被调用了两遍。但是为什么js会加载两次呢?你看看最后的页面结构跟你书写的完全不一样,多了个&div data-role=&page&&。因此,答案揭晓了,如果你在页面中没有使用&div data-role=&page&&,jquery mobile会自己创建一个,因为它必须依赖这个。它怎么创建呢?把body里面的内容复制一遍塞到div里去,body里有什么东西呢?除了你的img外还有两个script,因此它被塞入到新节点后,浏览器解释为需要加载scirpt里的内容,最后奇迹就发生了。。。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我在本地用你的代码测试了下,也有同样的问题。
然后把jQuery Mobile移除绑定到ready上,就没有这个问题了。
所以应该是jQueryMobile的问题,或者是你使用的方式有问题。
PS:没有用过jQuery Mobile
看了下jQuery Mobile的文档,最外层加了个div,设置 data-role=&page&就没有问题了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先感谢三位大牛对我的问题的关注和回答,应该说综合三位的回答就是最完整的答案了:simon兄分析问题很清晰、透彻,一针见血地指出是使用方式的问题;airyland给出了一种巧妙的解决方式,让我思路开阔不少;joyqi的解决方案是非常合适的,专业和敬业让我拜服(凌晨还在帮我分析问题);总结出现目前遇到的这个问题的原因有两点:由于赶着做新功能,没有仔细看jQuery Mobile的文档,不了解它init初始化网页会对原有结构做一些调整,需要&div data-role=&page&&&/div&;没有参照jQuery Mobile的示例demo,把jQuery和jQuey Mobile的js引入放到&head&&/head&里面;总结最优解决方案有两个:按joyqi分析的方法,把引入js的代码放到&head&&/head&里面;或者按照simon的方法,把网页内容放到&div data-role=&page&&&/div&容器里面(这种情况js引入代码可以放到它里面,或者也可以放到&head&&/head&里面);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
click是浏览器的事件,在移动设备上应该要用移动的事件tap咯
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你们说的都有道理,我最后总结了一套方法
1. body最外层加&div data-role="page"&&/div&
2. 所有的js放在&div data-role="page"&&/div&
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:10:00 提问
jquery的click事件多次绑定
.tools-comment是评论按钮的class名,点击它弹出回复评论层。添加回复内容,点发表,发表成功,将返回的数据写入页面中。此时不刷新页面,再次点击评论,发表,则一下发表了两条相同的数据,ajax请求了两次。第三次则发表三条......第N次发表N条。.editWindow-send就是弹出层上面的发表按钮的class名,代码如下,请大神帮看看是什么原因。
var topicid,artsid,
$("#found").on("click",".tools-comment",function (){
//跳转评论
var tempHtml='';
var url="index.php?app=weixin&ac=wnote&ts=verifyUser";
type:"get",
async:false,
datatype:"json",
success:function(data)
var data=$.parseJSON(data);
if(data.code==1)
showEditWindow();
if(data.code==0)
popWindowAlert(data.msg);
if(data.code==4)
location.href=data.ts_
if(data.code==5)
location.href=data.ts_
//这里需要记录当前点击是哪个话题
articleid=$(this).children(".docomment").attr("articleid");
artsid=$(this).children(".docomment").attr("artsid");
topicid=$(this).children(".docomment").attr("topicid");
if(articleid){
var url="index.php?app=weixin&ac=wnote&ts=addArticleComment";
$(".editWindow-send").on("click",function (){
var content=$("#ComentContent").val();
type:"post",
datatype:"json",
async:false,
data:{"articleid":articleid,"content":content},
success:function(data){
var data=$.parseJSON(data);
//执行登陆跳转
if (data.status==800)
popWindowAlert(data.msg);
//执行成功返回跳转
if(data.status==1){
var htmlStr="&li class='reply-again' id="+data['res']['commentid']+" comment_id="+data['res']['commentid']+"&&div class='ku_replyp delcomment' id="+data['res']['commentid']+" to_userid="+data['res']['commentid']+" comment_id="+data['res']['commentid']+"&&div class='reply-photo'&&a href='index.php?app=weixin&ac=wcircleZone&userid="+data['res']['userid']+"' class='ui-link'&&img src='"+data['res']['face']+"'&&/a&&/div&&div class='ku_replyp_text'&"+data['res']['username']+":&/div& &div class='ku_replyp_con'&"+data['res']['content']+"&/div&&/div&&div class='reply-time'&&div class='reply-time-l'&"+data['res']['addtime']+"&/div& &div class='reply-time-r'& &ul&&li class='glm-love'&&i&&/i&&span class='likenum'&&/span&&/li& &li class='glm-line'&|&/li& &li class='comment-reply' to_comment_id='300' comment_id='300'&&i&&/i&&/li& &/ul&&/div& &/div& &div class='reply-box-all'&
&/div&&div class='clear'&&/div& &div class='br10'&&/div&&/li&";
$(".gl-replay-list").append(htmlStr);
//执行失败
popWindowAlert(data.msg);
按赞数排序
把.editWindow-send的onClick放到外面,跟#found同一个等级
其他相关推荐

我要回帖

更多关于 jquery click触发多次 的文章

 

随机推荐