我了个擦,调了一晚上,终于知道jQuery的恶心了

PerterPon 2012-04-16 12:34:05
自定义了一套事件侦听和触发的机制,基于jquery的bind(1.7以后可以用on代替)和trigger,最近调试的时候老是发现有问题,项目是采用面向对象的方式,然后自然会给很多类的对象绑定一些自定义事件,奇葩的事情来了,有时候事件处理函数老是莫名其妙地执行两次,蛋都碎掉了,终于发现原因了,看如下代码

var obj = {
test : function(){
console.log('1111')
}
$(obj).trigger(test);
}

打印出的结果为'1111', trigger一个对象的事件,其同名方法就会被调用,再看如下代码

var obj = {
test : function(){
console.log('1111')
}
$(obj).on('test', function(){console.log('2222')}).trigger(test);
}


结果喜闻乐见,同时打印出了1111和2222,我擦咧,改了一晚上啊,整整一晚上,整个计划都乱了

一看时间又快1点了,唉,明早又得上班了,程序猿伤不起啊,想下班后自己做些项目,看着自己的SVN提交日志,基本都是12点,1点的样子,唉,真的感觉有点累了,但是自己现在都还没毕业,以后的日子还长着呢,慢慢熬吧。
吐槽完毕,睡觉咧。
...全文
357 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yong_zeal 2012-04-16
  • 打赏
  • 举报
回复
js还没看完了,jquery还只是了解个概念。。
KK3K2005 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

专研这个,这不是学生该干的事
[/Quote]
学生的时候不专研 上班哪有时间给你啊
q107770540 2012-04-16
  • 打赏
  • 举报
回复
常总结才会有进步
  • 打赏
  • 举报
回复
现在也在用jQuery 一直在看其选择器,要用首先必须选择某个元素
三石-gary 2012-04-16
  • 打赏
  • 举报
回复
先去把JQUERY方法都看下。。
PerterPon 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:
呵呵,这个这真的是我孤陋寡闻了,之前一直想看jQuery源码来着,后来真正想看的时候,发现没时间了,现在公司任务N多,每天都9点的样子下班,回到家基本就洗洗睡了,不过我看貌似api文档没有提到这么一回事啊囧,昨天实在是调得太恶心了,上来吐槽下哈。另外请问下这个问题有解决办法么?如果不行的话,我就只能放弃jQuery的bind和trigger,但是考虑到以后,这些方法还……
[/Quote]

实在不好意思,太粗心了,括号写错了

var obj = {
test : function(){
console.log('1111')
}
}
$(obj).trigger('test');

这回可以了,测试过了,上面第二个也是一样,括号写错了,还有trigger里面的事件名称要加分号= =。。。。
峭沙 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
呵呵,这个这真的是我孤陋寡闻了,之前一直想看jQuery源码来着,后来真正想看的时候,发现没时间了,现在公司任务N多,每天都9点的样子下班,回到家基本就洗洗睡了,不过我看貌似api文档没有提到这么一回事啊囧,昨天实在是调得太恶心了,上来吐槽下哈。另外请问下这个问题有解决办法么?如果不行的话,我就只能放弃jQuery的bind和trigger,但是考虑到以后,这些方法还是有必要的。
[/Quote]首先,我建议你把javascript的语法先学好吧。。
var obj = {
test : function(){
console.log('1111')
}
$(obj).trigger(test);
}
你确定上面的这种代码能运行吗?这根本就不符合js的语法
其次呢,jquery的trigger是触发相应元素的一个指定类型的事件,就比如$("#test").trigger("click");是触发id为test的元素的click事件,就跟用鼠标去点击这个元素一样,会执行绑定在此元素上的所有click事件函数,同时还会往上冒泡。
PerterPon 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

连api都没搞清楚就上来吐槽,现在的学生。。
[/Quote]

呵呵,这个这真的是我孤陋寡闻了,之前一直想看jQuery源码来着,后来真正想看的时候,发现没时间了,现在公司任务N多,每天都9点的样子下班,回到家基本就洗洗睡了,不过我看貌似api文档没有提到这么一回事啊囧,昨天实在是调得太恶心了,上来吐槽下哈。另外请问下这个问题有解决办法么?如果不行的话,我就只能放弃jQuery的bind和trigger,但是考虑到以后,这些方法还是有必要的。
峭沙 2012-04-16
  • 打赏
  • 举报
回复
连api都没搞清楚就上来吐槽,现在的学生。。
xuzuning 2012-04-16
  • 打赏
  • 举报
回复
专研这个,这不是学生该干的事
Acesidonu 2012-04-16
  • 打赏
  • 举报
回复
淡定淡定
AslenG 2012-04-16
  • 打赏
  • 举报
回复
长期这么苦就没必要干了。
sinbasara 2012-04-16
  • 打赏
  • 举报
回复
要不怎么会有“我错在哪里了”这神级口头禅呢
风一样的大叔 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

引用 10 楼 的回复:

引用 3 楼 的回复:

专研这个,这不是学生该干的事

学生的时候不专研 上班哪有时间给你啊

确实是悔不该当初啊,当时的时间要是没用来玩游戏该有多好,唉,话说这个问题到底有没有解决办法啊,还是trigger本事就是如此啊,不然又得好好得一番改了
[/Quote]我当学生的时候都没学这个,都是工作后自学的,jquery选择器是非常强大的,号称万能选择器,我也正在学习呢,共勉吧
PerterPon 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 3 楼 的回复:

专研这个,这不是学生该干的事

学生的时候不专研 上班哪有时间给你啊
[/Quote]
确实是悔不该当初啊,当时的时间要是没用来玩游戏该有多好,唉,话说这个问题到底有没有解决办法啊,还是trigger本事就是如此啊,不然又得好好得一番改了

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧