作者etman395 (技术时代)
看板Ajax
标题Re: [问题] jquery子元素继承问题
时间Sun Dec 6 03:28:41 2009
可能不是同一本XD
因为if (event.target == this)
这个解决的方式 我那本书在阻止事件冒泡上没有一样写法
刚仔细翻了一下
事件向上触发 才叫冒泡 只有父元素有相同事件就会一直触发上去
bind("click",function(event){
event.stopPropagation(); //这是阻止事件冒泡
event.preventDefault(); //这是阻止预设行为
return false; //可以代替以上简写 我试过是有效的 但仅只於阻止冒泡不能阻止补获
}
事件向下触发 叫做事件补获 刚好和冒泡相反
而且有点不同 不同的地方在於 子元素会继承父元素的事件
而事件冒泡是触发父元素相同的事件
而我那本书里是提到 jquery不支持事件补获
必须要用javascript来阻止
看来阻止的方式就是刚解决的这行了
if (event.target == this)
※ 引述《etman395 (技术时代)》之铭言:
: XD 解决了
: 用第一种
: if (event.target == this) {要做的事...}
: 其它二种没有用 不知道为啥
: 我跟你应该是看同一本书吧XD
: 只是我记得当时好像是讲事件冒泡
: 我一直以为那是阻止往上触发和预设行为
: 所以没有用在这里
: 虽然解决了
: 不过解的有点不理解XD
: 为什麽只有 if (event.target == this)这个有效
: 其它二个无效 难不成其它二个是纯阻止往上触发和预设行为吗??
: ※ 引述《Peruheru (还在想)》之铭言:
: : 刚好在看jQuery的入门书
: : 这本说得比较详细,有说到防止事件传递给後代元素的方法
: : 第一种:
: : 使用event物件来检查
: : 例:
: : $('#btn').bind("click",function(event){
: : if (event.target == this) {
: : ....(你要做的事)....
: : }
: : });
: : 就是在function宣告时多加一个event物件
: : 它的target属性就表示着现在触发事件的对像
: : 检查它就能确保发生的对像是你要的
: : 第二种:
: : 使用另外一个event的内建函式来阻挡事件继续传播
: : 例:
: : $('#btn').bind("click",function(event){
: : ....(你要做的事)....
: : ...
: : event.stopPropagation();
: : });
: : 这就是呼叫event物件的函式,命令其停止事件继续送到别的元素上
: : jQuery有去解决跨浏览器的相容
: : 所以这应该可行
: : 不过要注意这无法停止预设行为
: : 像是在表单上按enter预设会submit出去这个行为
: : 光靠这样不够
: : 还得加上同样是event物件的.preventDefault()方法
: : 或是直接使用第三种方法
: : 第三种:
: : 直接return false
: : 这就直接把
: : return false;
: : 这行指令加在function内的最後一行就行了
: : 这就不用范例了吧XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.110.83.12
※ 编辑: etman395 来自: 123.110.83.12 (12/06 03:34)