我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如:

  我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的id,class,现在想想我都不好意思叫他封装了),然后想到之前老大有写过这个功能去看下他怎么写的,真是没有对比就没有伤害啊,这才叫封装;

$(':checkbox[data-check-target]').click(function () {
var target = $(this).attr('data-check-target');
if ($(this).prop('checked')) {
$(target).prop('checked', true);
} else {
$(target).prop('checked', false);
}
});

  首先这儿的高封装性就体现出来了,只有一个自定义的data-check-target属性用于js和html分离后的连接桥梁(而我当时用两个:一个全选复选框,一个子复选框,有关的点都用上了,这样就没起到封装的效果,js和html耦合性太大)(我看到上面的js就在想怎么通过一个连接点把三个相关联的东西联系起来的呢);

  接下来我们继续看具体使用的地方:

  我发现全选复选框用于和js链接的桥梁的自定义属性data-check-target有点特别:

<input type="checkbox" data-check-target=".id-checkbox" />

  它的值为“.id-checkbox”,看起来就感觉好奇怪,继续往下看子复选框实现:

<input type="checkbox" name="ids[]" value="@item.Id" class="id-checkbox" />

  到这儿才豁然开朗原来子复选框的class名称就存放在自定义属性data-check-target中;

var target = $(this).attr('data-check-target');

  然后再通过自定义属性data-check-target拿到子复选框的class,从而达到高封装性;

  我总结的就是js和html通过了自定义属性data-check-target通信,子复选框依赖全选复选框自定义属性data-check-target的值;

  这个例子看下来代码不难,也没有什么地方很难理解的,就是通过一个自定义属性巧妙的完成了低耦合的封装,这也是正是这段代码的难点和精髓;

  我真心抑制不住内心的崇拜,这几行代码太漂亮了。

  PS:上面js为什么用prop而不用attr,因为:如果当前input中初始化未定义checked属性,则该元素没有指定的checked属性,所以.attr()会返回undefined;

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

以上所述是小编给大家介绍的JQuery实现列表中复选框全选反选功能封装(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对Devmax网站的支持!

JQuery实现列表中复选框全选反选功能封装(推荐)的更多相关文章

  1. HTML5单选框、复选框、下拉菜单、文本域的实现代码

    这篇文章主要介绍了HTML5单选框、复选框、下拉菜单、文本域的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. ios – ipatool因异常而失败

    我正在导出企业部署的存档,我从ipatool获得了一个例外.我该如何解决这个问题?

  3. xcode4 – 重新启用XCode 4“Xcode启动时显示此屏幕”复选框.

    我设法取消选中Xcode4’显示这个屏幕,当Xcode启动’复选框,我想要它再次.这是如何实现的?除了“启动新项目”之外,Xcode4文档中还没有提到用户prefs中的任何内容.此外,Google上的任何地方似乎都没有任何问题.如果有人知道重新启用复选框的位置,请告诉我.再次感谢.V.V.解决方法选择窗口>欢迎使用主菜单中的Xcode,然后重新检查“显示此窗口…”

  4. 应用商店 – 自定义B2B应用的复选框未在iTunes连接中显示

    我想将一个应用程序作为自定义b2b应用程序带给AppleStore.唯一的问题是我的iTunes连接没有选项.这个B2B计划在德国不可用吗?我找不到任何具体的信息.也许你们中的一个有同样的问题.解决方法我有同样的问题,复选框不在那里.确保在iTunesConnect内您已经同意在“合同,税务和银行”下的相关合同.一旦你要求并同意这些,复选框应该出现.

  5. Swift - 让StoryBoard设计视图,程序运行时都使用横屏形式

    1,运行时横屏将项目属性“General”->“DeviceOritentation”的Portrait复选框去掉2,storyboard设计视图横屏在storyboard中,单击中间界面视图的头部,在右侧属性面板中。把Size设置为iPhone4-inch把Orientation设置成Landscape

  6. 如何在swift(iOS)中创建单选按钮和复选框?

    我正在开发一个允许进行调查的应用程序。我的布局是从基于XML的问题生成的。我需要创建单选按钮(单选)和复选框。我没有发现任何有用的swift。有没有人有想法?对于无线电按钮和复选框,没有内置的东西。您可以轻松实施复选框。您可以为UIControlStatenormal的按钮设置一个uncheckedImage,并为您的UIControlStateSelected设置一个checkedImage。现在点击按钮将更改其图像,并在选中和未检查的图像之间交替显示。要使用单选按钮,您必须为您要作为单选按钮的所有按钮

  7. swift – 在Xcode 6.0.1中的Interface Builder中,“限制边缘”是什么意思

    我理解“间距到最近邻”的目的,但是“限制边缘”是什么意思?在特定控件按钮的边缘“间距到最近邻”之间有一个链接,同时检查名为“限制边缘”的复选框吗?Autolayout中此功能的作用是什么?

  8. android – 带复选框的ListView项目 – 如何删除复选框涟漪效应?

    我有一个带有项目的ListView包含一个复选框和一些其他元素.问题是,当我点击Android5设备上的列表项时,我看起来像这样:我不希望在复选框周围产生涟漪效应.我怎么能实现这一点?

  9. Android复选框可见性问题

    我在我的代码中使用了一个复选框,当它检查时它会使textview和editText可见,但如果我取消选中de复选框,它们将继续显示而不是消失.这是代码:并且在相对布局内部的xml的一部分:当我取消选中复选框时,我该怎么做才能使textView和EditText消失?解决方法使用View.VISIBLE,View.INVISIBLE,View.GONE来控制可见性.

  10. android – 自定义列表单击复选框

    另外,如果单击列表项的主要部分但是在选中项目中的CheckBox时具有其他功能,如何设置列表以便继续执行我所需的功能?解决方法如here所述,只有在没有其他视图可聚焦的情况下,单击侦听器才有效.将CheckBox设置为focusable=“false”应该可以解决问题:

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部