jquery實現 引入jquery文件javascript
// 在線引入 <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js" type="text/javascript"></script>
html代碼css
<div style='width:300px;height:50px;margin-left:300px;margin-right:auto;'> <label>多選框: </label> <input type="checkbox" name="checkAll" value="" title="全選">全選 <input type="checkbox" name="type" value="奧迪" title="奧迪">奧迪 <input type="checkbox" name="type" value="豐田" title="豐田">豐田 <input type="checkbox" name="type" value="大衆" title="大衆">大衆 </div>
jquery代碼html
$(function(){ // 獲取單個單選框的值 $(":checkbox[name='type']").on('change', function () { var item= $(this).val(); alert(item) arr = $('input[name="type"]').length checkedArr = $('input[name="type"]:checked').length if(arr == checkedArr){ $('input[name="checkAll"]').prop('checked', 'checked') } else { $('input[name="checkAll"]').prop('checked', '') } }) // 獲取同一name所有多選框的狀體 $(":checkbox[name='checkAll']").on('click', function () { var flag = $(this).prop('checked') //alert(flag) var item=$('input:checkbox[name="type"]'); item.each(function(index, element){ //alert($(element).val()) if(flag) { $(element).prop("checked", "checked") alert('全選') } else { $(element).prop("checked", "") alert('全不選') } }) }) })
效果以下
vue
二、layui實現
引入文件java
<link href="layui-v2.5.5/layui/css/layui.css" rel="stylesheet" /> <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js" type="text/javascript"></script> <script src="layui-v2.5.5/layui/layui.js" type="text/javascript"></script>
html文件jquery
<div class="layui-form"> <div style='width:300px;height:50px;margin-left:300px;margin-right:auto;'> <label>多選框: </label> <input type="checkbox" name="checkAll" lay-filter="demoCheckboxAll" value="" title="全選">全選 <input type="checkbox" name="type" lay-filter="demoCheckbox" value="奧迪" title="奧迪">奧迪 <input type="checkbox" name="type" lay-filter="demoCheckbox" value="豐田" title="豐田">豐田 <input type="checkbox" name="type" lay-filter="demoCheckbox" value="大衆" title="大衆">大衆 </div> </div>
js文件ajax
layui.use(['element','form', 'table','layer'], function () { let form = layui.form, layerDom = layui.layer, element = layui.element; // 獲取單個選中的值 form.on('checkbox(demoCheckbox)', function (data) { // alert(data.elem.checked); alert(data.value);//判斷單選框的選中值 arr = $('input[name="type"]').length checkedArr = $('input[name="type"]:checked').length // 若全選中則全選按鈕自動選中 if(arr == checkedArr){ $('input[name="checkAll"]').prop('checked', 'checked') } else { $('input[name="checkAll"]').prop('checked', '') } form.render() }); // 全選按鈕切換 form.on('checkbox(demoCheckboxAll)', function (data) { var flag = data.elem.checked; alert(flag) arr = $('input[name="type"]') arr.each(function(index, item){ if(flag){ $(item).prop('checked', 'checked') } else { $(item).prop('checked','') } }) form.render() }); form.render() })
注意實現切換後要調用form.render()方法,不然不顯示全選或不全選狀態。
數組
三、用vue實現
引入js文件以下app
<script src="vue.js" type="text/javascript"></script>
html代碼以下框架
<div id="app"> <div style='width:300px;height:50px;margin-left:300px;margin-right:auto;'> <label>多選框: </label> <input type="checkbox" name="checkAll" @click='checkAll' value="" title="全選">全選 <input type="checkbox" name="type" @click='checkOne' value="奧迪" title="奧迪">奧迪 <input type="checkbox" name="type" @click='checkOne' value="豐田" title="豐田">豐田 <input type="checkbox" name="type" @click='checkOne' value="大衆" title="大衆">大衆 </div> </div>
js代碼以下
var app = new Vue({ el:'#app', data:{ type:'', }, created:function(){ var _this = this; }, methods:{ checkOne:function(event){ let _this = this _this.type = event.target.value alert(_this.type) arr = $('input[name="type"]').length checkedArr = $('input[name="type"]:checked').length if(arr == checkedArr){ $('input[name="checkAll"]').prop('checked', 'checked') } else { $('input[name="checkAll"]').prop('checked', '') } }, checkAll:function(event){ let _this = this let flag = event.target.checked let arr = $('input[name="type"]') arr.each(function(index, item){ if(flag){ $(item).prop('checked', 'checked') }else { $(item).prop('checked', '') } }) } }, });
效果圖
問題:爲何在layui或vue裏也只能用jquery的選擇器選擇對象數組,能夠用框架自帶的lay-filter或v-model等標籤實現麼?