[问题] event顺序

楼主: mobi76 (咻咻~)   2014-09-26 01:37:04
嗨大家好
先来段code
<script>
function show(){
document.getElementById('b').style.display = "";
}
function hide(){
document.getElementById('b').style.display = "";
}
</script>
<input id="a" value="" onclick="show()" onblur="hide()" />
<div id="b" style="display: none;">
<span onclick="document.getElement('a').value='1';">AAA</span>
<span onclick="document.getElement('a').value='2';">BBB</span>
</div>
我要做的就是点input会展开div b
再点span会将一个值填回
然后当没有要用这个功能时div又会隐藏起来
不知道这样说大家懂不懂呢
大概就像select一样 点其他地方option就会消失
可是我现在遇到一个问题
我用onblur 那么再点span时就会因为呼叫了hide()
而无法触发span的click
请问这该如何解呢?
谢谢大家~~~
作者: mmis1000 (秋月恋枫)   2014-09-26 02:39:00
http://goo.gl/cIPzkw简单来说就是span上的改用onmousedownhttp://jsbin.com/reyana/1/edit
作者: alog (A肉哥)   2014-09-26 02:41:00
问题就出在,既然onblur call了 hide functionspan事件为何还需要触发? 因为已经藏起来辣span父元素就是div#b,既然 div#b 隐藏了 span 本来就不该有任何click事件被触发,因为就点不到啊
作者: mmis1000 (秋月恋枫)   2014-09-26 03:08:00
http://jsbin.com/reyana/2 稍微说一下顺序所以你要嘛就改听鼠标事件,要嘛就改用可focus元素在onblur里判断新目标是不是选项
楼主: mobi76 (咻咻~)   2014-09-26 09:38:00
感谢my大~@alog:我想做出那样的功能,但不太会写,才生出奇怪的codeXD‘’

Links booklink

Contact Us: admin [ a t ] ucptt.com