作者fr730149 ()
看板Ajax
标题[问题] 点击目标div以外处时,隐藏该div
时间Tue Dec 20 16:31:27 2011
请教各位先进
小弟目前设计出一个弹跳视窗(div),其中包含多个核选方块(checkbox)。
想要让使用者,点击弹跳视窗以外范围时,自动隐藏该视窗
目前想到的方式是:
div绑住一个blur()事件,的确 点击其它处时会隐藏…
但一点选div内的物件(checkbox),也会隐藏div
不知这段要如何改写?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.125.235.184
1F:→ musie:window 挂一个点击事件,点击时检查是否在div内.. 12/20 16:38
2F:推 mrbigmouth:印象中jquery有个plugin新增一堆outside event 12/20 17:27
3F:→ chrisQQ:div 挂 click function,然後所有 div hide()。 12/20 18:21
4F:→ chrisQQ:this.show() 或是你可以取得目前 div id 用不等於id去hide 12/20 18:21
5F:推 mrbigmouth:哇靠...楼上这工程也太大了吧? div多一点岂不是会lag.. 12/20 20:57
6F:→ mrbigmouth:照一楼讲去做就对了... 12/20 20:59
7F:推 mrbigmouth:var $div=$('#div');$('body').click(function(e){ 12/20 21:05
8F:→ mrbigmouth: if ($(e.target).parents('#div').length<1){ 12/20 21:05
9F:→ mrbigmouth: $div.hide(); 12/20 21:06
10F:→ mrbigmouth: } 12/20 21:06
11F:→ mrbigmouth:}); 12/20 21:06
12F:→ mrbigmouth:以上是假设该div id为div的写法 12/20 21:06
13F:推 mrbigmouth:啊 parents会不包括自身.... 12/20 21:10
14F:推 mrbigmouth:if里面要加&& $(e.target).attr('id')!='div' 12/20 21:20
15F:→ mrbigmouth:不过这还满笨的 更聪明的写法找别人吧.... 12/20 21:20
17F:→ chrisQQ:我原本看成是点击 div 消掉其他 div :( 不过看起来, 12/20 21:53
18F:→ chrisQQ:原PO只是想做 lightbox/colorbox 的效果罢了… 12/20 21:54
19F:→ chrisQQ:至於会有 100 个 div 只是想测试一下很多 div 到底多慢 12/20 21:54
20F:→ chrisQQ:可以开 firefox/chrome 看 console log 里面有记 12/20 21:55
21F:→ chrisQQ:timestamp。 12/20 21:55
22F:→ chrisQQ:另外 IE 如果有问题的话是正常的,我记得 ie9 之前都没有 12/20 22:00
23F:→ chrisQQ:console.log 所以会报炸。我对 IE 很不友善的 XDD 12/20 22:00
24F:→ fr730149:谢谢各位的回答,原来还有outside的plugin 12/21 09:24
25F:→ fr730149:我都忘了还可以用$('body')可以用,这方法够了 12/21 09:27
26F:→ fr730149:IE 我也很少用…但IE的市占率高,故不得不配合它 12/21 09:29
27F:→ chrisQQ:是说,拿掉 console.log 那段的话,理论上IE也能动 12/21 10:02