Jquery Dom事件函数应用实例

最近做项目的时候利用DIV模拟下拉框,基本思路如下:
1, 触发元素设置为input,当然也可以是其他类型元素
2, 给触发源绑定click事件,依次执行创建DIV、然后利用Ajax动态填充DIV内容、再利用Ajax的回调函数给填充的内容增加Hover事件,以增强用户体验、绑定click事件将值填充至触发源元素

思路有了,代码实现起来也很容易,主要是用Jquery的选择器,那是相当的强大。大约1小时,界面+功能+样式 基本完成,还是看代码吧
HTML部分:具有“drop”样式的元素为模拟下拉

JS部分:

Ajax后台部分的代码就不贴了,主要就是根据触发源的不同,查询不同的数据,并拼接成HTML,再输出给客户端。
代码基本一气呵成,开始测试吧
截个图看看效果:
(带小三角的是模拟下拉)

怎么样,效果还行吧?本人CSS不好,界面做成这样很不容易了,呵呵
OK,模拟下拉基本完成,测试似乎也没啥问题。
不过,事情永远都不是那么顺利的,被我抓到一个BUG
就是点击下拉后,出现DIV,如果不做任何选择,单击其他位置DIV收不回去,必须选择一个项,DIV才能关闭。
似乎也不是什么大的问题,但从使用习惯上来讲这个设计是不人性化的。
本着用户就是上帝的态度,我决定,改!应该很简单的事情嘛
思路如下:
不选择的时候,单击其他区域收回DIV,在Document或父容器下加一个click事件,把弹出DIV删除不就可以了吗?我决定在动态加载DIV后,每次给document元素绑定一个删除事件,这里用到了Jquery的one方法,每次调用每次加载,应该是没有问题的吧?

修改了下之前的代码:
在Ajax回调函数里加了如下动态绑定click事件的代码:
$(document).one("click",removePopdiv);
function removePopdiv(){
      $(".popdiv").remove();
}

解释一下:one是Jquery Event类型函数之一,看名称就知道,这个方法是在匹配元素上绑定一个事件,一旦事件执行一次后便卸载事件。
接着测试:
先弹出DIV,再点击其他位置,OK,DIV收回去了(被删除了)。我想,这么容易就成功了。
可是,当我再点击此模拟下拉并选择了一个项时,DIV死活不出来了!
我仔细考虑了一下,应该是卸载事件没有被执行造成,恩,应该加一个unbind方法,再次修改代码如下:

OK,测试通过!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值