美文网首页
2018-09-13 点击事件处理函数练习

2018-09-13 点击事件处理函数练习

作者: 十块腹肌的小胡子 | 来源:发表于2018-09-13 16:24 被阅读0次

<form id="test-form" action="test">

    <legend>请选择想要学习的编程语言:</legend>

    <fieldset>

        <p><label class="selectAll"><input type="checkbox"> <span class="selectAll">全选</span><span class="deselectAll">全不选</span></label> <a href="#0" class="invertSelect">反选</a></p>

        <p><label><input type="checkbox" name="lang" value="javascript"> JavaScript</label></p>

        <p><label><input type="checkbox" name="lang" value="python"> Python</label></p>

        <p><label><input type="checkbox" name="lang" value="ruby"> Ruby</label></p>

        <p><label><input type="checkbox" name="lang" value="haskell"> Haskell</label></p>

        <p><label><input type="checkbox" name="lang" value="scheme"> Scheme</label></p>

        <p><button type="submit">Submit</button></p>

    </fieldset>

</form>

绑定合适的事件处理函数,实现以下逻辑:

当用户勾上“全选”时,自动选中所有语言,并把“全选”变成“全不选”;

当用户去掉“全不选”时,自动不选中所有语言;

当用户点击“反选”时,自动把所有语言状态反转(选中的变为未选,未选的变为选中);

当用户把所有语言都手动勾上时,“全选”被自动勾上,并变为“全不选”;

当用户手动去掉选中至少一种语言时,“全不选”自动被去掉选中,并变为“全选”。

'use strict';

var

    form = $('#test-form'),

    langs = form.find('[name=lang]'),

    selectAll = form.find('label.selectAll :checkbox'),

    selectAllLabel = form.find('label.selectAll span.selectAll'),

    deselectAllLabel = form.find('label.selectAll span.deselectAll'),

    invertSelect = form.find('a.invertSelect');

// 重置初始化状态:

form.find('*').show().off();

form.find(':checkbox').prop('checked', false).off();

deselectAllLabel.hide();

// 拦截form提交事件:

form.off().submit(function (e) {

    e.preventDefault();

    alert(form.serialize());

});

//全选按钮逻辑:监听状态改变,是否被选择:若被选择,隐藏全选按钮,显示全不选按钮,并设置checked = “checked”

selectAll.change(function(){

  $(this).is(':checked') ? deselectAllLabel.show() && selectAllLabel.hide() : deselectAllLabel.hide() && selectAllLabel.show();

  langs.prop('checked', $(this).is(':checked'));

});

langs改变,判断是否满足全选

langs.change(function(){

  langs.filter(':checked').length === langs.length ? selectAll.prop('checked', true) && deselectAllLabel.show() && selectAllLabel.hide() : selectAll.prop('checked', false) && deselectAllLabel.hide() && selectAllLabel.show();

});

反选绑定点击事件,非checked改为checked

invertSelect.click(function(){

  langs.each(function(){

.prop( propertyName, value ) value取 true or false 前面加!取相反

    $(this).prop('checked', !$(this).is(':checked'));

  });

  langs.filter(':checked').length === langs.length ? selectAll.prop('checked', true) && deselectAllLabel.show() && selectAllLabel.hide() : selectAll.prop('checked', false) && deselectAllLabel.hide() && selectAllLabel.show();

});

相关文章

  • 2018-09-13 点击事件处理函数练习

    请选择想要学习的编程语言: 全选 全不选 反选 JavaScr...

  • 1. Vue基本语法

    插值表达式 文本渲染 属性绑定 事件绑定 练习:文字走马灯效果 流程: 在按钮上绑定一个点击事件 事件处理函数中,...

  • 基础二:事件处理程序

    事件的三个要素 事件源 事件类型 事件处理函数如,给id为myBtn的按钮绑定一个事件处理程序,点击这个按钮显示,...

  • 节流函数、防抖函数、函数重载

    1、节流函数 当持续触发事件时,保证隔间时间触发一次事件。 应用场景:处理点击事件,每隔delay时间再次调起点击...

  • 「js」点击事件的3种实现与事件覆盖

    1.行内绑定点击事件 点我呀 该方法只能绑定一个处理函数。 2.onclick绑定点击事件 运行结果,点击div时...

  • react事件处理

    一,事件处理 写法:on+事件名称= {事件处理函数} 类组件触发写法on+事件名称 = 事件处理函数 ---...

  • JavaScript函数02

    目录 常用事件和事件处理函数 递归函数 函数的属性和方法 函数的作用域 常用事件和事件处理函数 事件参考--MDN...

  • 点击事件处理

    发送触摸时间后,系统会将事件添加到系统UIApplication的事件管理队列中 UIApplication 会在...

  • 点击事件处理

    想要实现的效果点击CollectionCell走func collectionView(_ collectionV...

  • jqurey事件

    jQuery 事件函数 jQuery 事件处理方法是 jQuery 中的核心函数。 事件处理程序指的是当 HTML...

网友评论

      本文标题:2018-09-13 点击事件处理函数练习

      本文链接:https://www.haomeiwen.com/subject/guwwgftx.html