前端环境:Jquery+Bootstrap,checkbox使用了iCheck

关于iCheck控件点击事件的处理,其中有两个相关事件ifClicked和ifChanged

经过实验发现,ifClicked是点击的时候触发,此时check状态还没变化

ifChanged是状态变化后触发。

也就是说,当点击checkbox的时候,触发顺序是:

ifClicked事件-->checkbox check状态变化-->ifChanged事件

如果有其他逻辑触发iCheck的.iCheck('check')和.iCheck('uncheck'),改变状态时,会直接触发ifChanged事件,不会触发ifClicked。

(备注:看网上也有人提出ifChanged事件在check状态变化之前触发(讨论链接:https://bbs.csdn.net/topics/391953382),我也不知道是怎么回事。这是我自己测试的结果,而且从ifChanged这个事件命名来看,也应该是在状态变化之后来触发的。)

假如我们需要某些关联操作,需要明确指定点击的时候才要触发某些事件(而不是状态变化的时候触发),但是点击的时候check状态又没有发生变化,此时获取状态是错误的。

上面提到的帖子里提到用setTimeout定时器人为模拟一个异步操作的方法。这个方法,也有弊端,时间间隔设定要恰当,否则点击速度太快,两次点击时间间隔小于设定的时间间隔,会出现状态异常。

帖子里还有一个方案:

self.on("ifClicked", function (ent) {

if($(self).is(":checked"))

//现在判断时若是选中的,点击完了就变成了未选中了

else

//这里判断是没选中,点击完了就变成选中了

})

这种方法适用于checkbox单独一个使用,一般的checkbox都是好多放在一个组里,此种方法判断就有点麻烦了。

我这里提出另外一个方法。使用ifClicked和ifChanged联合解决:

设定一个bool变量:iCheckBoxClickFlag记录是否被点击

当被点击的时候,触发ifClicked事件,iCheckBoxClickFlag设定为true

当触发ifChanged事件的时候,再根据iCheckBoxClickFlag的状态,判断是否是点击事件过来的。假如是,就执行自定义逻辑

//iCheckBox是否被点击

var iCheckBoxClickFlag = false;

//处理ifClicked

$("input:checkbox[name='city_cb']").on('ifClicked', function(event){

console.log('checkbox click');

iCheckBoxClickFlag=true;

});

//处理ifChanged

$("input:checkbox[name='city_cb']").on("ifChanged",function(){

console.log('checkbox changed...');

if(!iCheckBoxClickFlag){

return;

}

iCheckBoxClickFlag = false;

//自定义逻辑

}

java 检测点击事件控件_iCheck控件ifClicked和ifChanged事件的讨论相关推荐

  1. WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

    在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件. 例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开. 在这个过程中 ...

  2. 控件中一些常用的属性和事件

    1.1常用基本属性 1)Name:表示控件的名称. 2)Enabled:表示控件是否可以对用户交互做出响应. 3)Font:表示控件中显示文字的字体格式,包括字体名称.字号以及是否以斜体.加粗和下划线 ...

  3. C#控件的创建、属性设置及事件注册

    摘要:本文基于Visual studio 2019, 以按钮控件(Button)为例,认识控件的创建方式.属性设置及事件注册. 编程语言:C# 编程环境:Visual Studio 2019 目录 控 ...

  4. JAVA知识点梳理第四部分——Swing控件

    JAVA整理知识点传送门: JAVA知识点拉理第一部分--常规知识 JAVA知识点梳理第二部分--接口.内部类.异常等等 JAVA知识点梳理第三部分--图形用户界面GUI部分 JAVA知识点梳理第四部 ...

  5. java调用ocx控件(ActiveX控件),SWT调用ocx(ActiveX)

    java调用ocx控件(ActiveX控件),SWT调用ocx(ActiveX) 注 : OLE.OCX.ActiveX不进行过多阐述,简单理解就是插件,组件类 调用成功,即可展示ocx对应的窗口 ​ ...

  6. java 地图控件_控件交互-与地图交互-开发指南-Android 地图SDK | 高德地图API

    控件是指浮在地图图面上的一系列用于操作地图的组件,例如缩放按钮.指南针.定位按钮.比例尺等. UiSettings 类用于操控这些控件,以定制自己想要的视图效果.UiSettings 类对象的实例化需 ...

  7. java学习笔记(三):前端miniUI控件库入门

    java学习笔记(三):前端miniUI控件库入门 最近在一家公司实习学习,一上来就需要学习了解相关的前端内容--miniUI.而这个内容自己本身并没有了解学习过,上手也是遇到了不少的问题,于是想把自 ...

  8. 如何设计一个 iOS 控件?(iOS 控件完全解析)

    前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内 ...

  9. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

  10. iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

    -- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事 ...

最新文章

  1. Kafka Cluster元数据在客户端缓存采用的数据结构
  2. linux内核更新/修补程序,Ubuntu 18.04.3 LTS无需重启即可轻松修补Linux内核
  3. kvm架构服务器_顺应云计算变革大势,腾讯云全新星星海自研服务器真正为云而生...
  4. UltraTextEditor
  5. 使用telnet命令验证邮箱
  6. js获取input上传文件名和后缀
  7. python中二维列表的遍历方式(亲测)
  8. 数组转换成json key-value形式
  9. 第三次学JAVA再学不好就吃翔(part85)--静态导入
  10. 忘记 mysql 密码的取回方法
  11. 互联网晚报 | 9月28日 星期二 | 乐视手机宣布回归;小鹏汽车累计交付量突破10万台;苹果售出20亿部iPhone...
  12. flask mvc模式开发_Flask中文文档-转载
  13. UI登录表单使用模板素材
  14. mysql都有什么基本函数_【第七章】MySQL的基本函数
  15. 最强JAVA核心技术群
  16. 初学Linux (Linux_note)
  17. 梯度下降法中的参数学习速率如何选择
  18. 137_原始套接字_发送UDP数据,模仿他人飞秋给另一个飞秋客户端发送信息
  19. 计算机兴趣小组活动总结,兴趣小组活动总结优秀范文
  20. 让电脑自动开机、关机以及取消开机密码

热门文章

  1. 一文读懂哈希算法SHA256
  2. The Preliminary Contest for ICPC Asia Nanjing 2019
  3. 渗透测试之通道构建Cheat Sheet
  4. 解读全部二十三种设计模式(附测试代码)
  5. html的abbr标签,html中如何使用abbr标签
  6. 【沃顿商学院学习笔记】商业分析——Customer Analytics:04 规范性分析 Prescriptive Analytics
  7. kubernetes Auditing 实战
  8. Opencv多版本共存问题
  9. 问题:在vue中照片墙的照片数量超过限制数量后,要隐藏图片上传按钮,如何解决?
  10. Google提供Fastboot和ADB单独下载服务(转载)