Ajax 板


LINE

各位好 情况是这样的 有一个网页上的按钮被挂载了两次click事件 一个是其他元件的自动行为(称为A事件) 另一个则是我们自行定义的click事件(称为B事件) 自行定义的事件因为写在按钮本身的onclick属性上 所以发生顺序会是[按钮按下]->[B事件]->[A事件] B事件做的事情很简单,就只是跳个confirm视窗询问要不要继续 问题在於,因为A事件没办法光靠B事件的回传值就取消其事件呼叫 虽然可以阻止form的submit行为 却没办法光靠这样就阻止在A事件里面做的事 为了能够阻止A事件其行为 我试着在B事件回传前改变一个变数的值 在A事件触发後马上检查这个值来判断要不要继续做 虽然这样有效,但很想知道 有没有办法取得A事件的上一个事件的回传值来做判断? 换个方式问,就是事件的回传值是否会保存在某处? 谢谢各位 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.147.13
1F:推 s25g5d4:如果确定B会先执行 那可以直接在B里停止事件传播 09/26 11:26
2F:→ s25g5d4:这样就不会触发A 09/26 11:26
老实说,我被下达的要求就是在不改动B的情况下,只靠改A的部分来达成一样的事 所以我非得要取得前一个事件的回传值不可... 不然我的作法烂归烂,好歹也有达成要求 另外停止事件传播的方法,好像只对其父元素有效果 我找了各种版本的停止事件传播方法,一股脑的全丢进去 还是无法阻止A的执行 才会出下策在A里面判断变数决定要不要继续 我javascript很弱,只能猜测是因为两个click事件挂於同一元素下 层级相同所以无法互相干涉
3F:→ danny8376:回传值会出现在事件里 不过那只有浏览器知道 09/26 12:41
4F:→ danny8376:所以只能改变数判定 虽然很想问... 难道不能B去叫A? 09/26 12:41
後来在stackoverflow看到的做法 在A的按钮事件绑定前,先抓出原本存在於A的函式物件 var oldEvent = button.click; 然後把button的click事件解除绑定後再重新挂上新函式 $(button).unbind('click'); button.click = function() {} 然後只要在函式开始时马上执行 if (oldEvent() == false) {return false;} 後面接上A事件原本在做的事,就能达成我想要的效果了 看起来好像是把两个事件合成为一个 由A来呼叫B,就可以取得B的回传值 而从B那边看来,就只是挂上的事件发挥了它原本的功能 而且这样改完全不需要动到B那端的程式 虽然可能是因为我太菜才不知道可以这样做 还是提供出来给大家参考看看 谢谢回应的各位
5F:→ TonyQ:这种作法有很多条件限制的... 09/27 18:49
6F:→ TonyQ:你的问题应该要解决需求端的问题,走这种旁门左道,早晚还是 09/27 18:49
7F:→ TonyQ:拖火车撞山~ 09/27 18:49
嗯...原来如此 不过我得说,身为新到不能再新,功力又没多好的菜鸟 我也没办法去改变早已谈好的需求 如果被要求要只改某边就达成功能,也只能先照做 我的知识也还不够我去判断这麽做或不这麽做的优劣之处在哪里 我的职位也不够我去谈 只知道一个,目前的作法得要肯定其他事件的挂载事件早於它 现在能运作只是因为confirm的部分是写在button的属性中 如果是另外写在其他地方的事件可能就会炸掉
8F:推 LaPass:好多公司的程式码中都有一堆火车在拖.... (眼神死) 09/27 21:12
我自己也写不出多好的作法所以这方面我比较...(汗) ※ 编辑: DragonTatto 来自: 114.25.203.178 (09/28 00:13)
9F:→ LPH66:这种写法看起来很像是 hook ? 09/28 13:59







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP