js实现三级分类checkbox三级联动的联动

Vue实现3个层次的联动的难题? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。23被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答
var model = {
'sellers': [{
'name': 'tom',
'products': [
{name: 'toms p1'},
{name: 'toms p2'}
'name': 'jerry',
'products': [
{name: 'jerrys p1'},
{name: 'jerrys p2'}
我们来建立业务逻辑的数据模型,由于原始数据里面没有选中与否的信息,所以我们希望插入selected flag,如下所示。然后我们再考虑从data到state需要怎样转化。var state,通过reduce(model, {type: 'INIT'})得到,初始情况下,得到的state是{
"sellers": [
"id": "0",
"name": "tom",
"products": [
"name": "toms p1",
"id": "0-0",
"sid": "0",
"selected": false
"name": "toms p2",
"id": "0-1",
"sid": "0",
"selected": false
"selected": false
"id": "1",
"name": "jerry",
"products": [
"name": "jerrys p1",
"id": "1-0",
"sid": "1",
"selected": false
"name": "jerrys p2",
"id": "1-1",
"sid": "1",
"selected": false
"selected": false
可以看到,state在原始数据中的seller和product插入了是否选中(selected)的flag,任何一个时刻,某个checkbox选中与否,只由其相应的selected flag控制。另外还插入了一些id值,这是为了jquery trigger event时event handler能够得知哪一个数据被操作了,如果你用Vue,Angular,React等framework,应该是可以直接传递被操作的object,id可能就没什么用了。2. UI --& action
以下代码绑定UI事件,用了jquery的代理绑定。
container.on('click', 'input[data-node-type="seller"]', handleSellerCheckboxClick);
container.on('click', 'input[data-node-type="product"]', handleProductCheckboxClick);
以下是seller checkbox点击的event handler,可以看到我们新建了一个action对象,然后用action去更新当前的state。action中定义了类型是“SELECT_SELLER”,是否被选中的flag,以及哪个seller刚刚被操作了。然后,我们用这个action来更新当前的state -- state = reduce(state, action) 。更新后的state用来重新渲染UI -- render(state)。
function handleSellerCheckboxClick (e) {
var checkbox = $(e.target);
var selected = checkbox.prop('checked');
var action = {
type: 'SELECT_SELLER',
data: { selected: selected, sellerId: checkbox.attr('data-seller-id') }
state = reduce(state, action);
render(state);
3. state + action --& statereduce函数具体我就不贴了,主要的思路就是,给定当前状态(state)以及一个输入(action),得到新的状态(state)。你的“三级联动”的逻辑,只在reduce函数中体现:也就是通过当前state,和输入action,来返回一个新的state,里面的selected flag发生了变化。注意,state = reduce(state, action)这个call是一个典型的有限状态机实现,学过数字电路的话这个概念应该不陌生,这其实就是Redux的主要思路。4. state --& renderstate更新以后,就可以直接渲染了。getHTML(state)是渲染函数,输入是state,输出是根据state得到的DOM字符串。每当state变化时,render(state)被call,通过getHTML(state)得到当前状态下的DOM映射,交给浏览器重新渲染。这部分可以替换成React,Vue,Angular等等渲染工具。=============================看起来好像做一个简单的事情用了很多的code,原因其一是以上code基本上是实现了一个渲染引擎雏形,其二是做了View相关和state相关函数的分离,注意,其中大多数函数都是可测试的,亦即,给定一组参数,只产生一个输出;另外,View相关的渲染,只和state对象相关,所以也是可测试的。5添加评论分享收藏感谢收起data:{
那么这个c你是监视不到的。这么办呢?那就把b换掉好了——你并不需要真的换掉,只需要一句Vue.$set(a,"b",a.b)就可以了。重点是要让vue知道你对b进行了赋值,至于你是不是真改变了值……那个并不重要。但是这个方法是对Object用的,对Array是另一个方法,Array.$set(index,value),这个value是什么也并不重要,重要的是你得通知vue我改变了Array里面的某一项。所以……理论上你只要在想要Vue强制刷新的时候给他来上一发set就好……但是,自己装的逼,跪着也要装完。为了呼应上面说的集中管理状态,不允许触发动作,我手动实现了一个简单的store和action。对,就是那个update方法。所有的状态更新都是通过它来通知的。当然,写那个函数还有另一个目的:这段代码里没有用到v-model,甚至绑在checked上的值也是可以包装过的。因为我非常非常讨厌双向绑定。(成功用双向绑定坑过自己若干次)事实上,我从来不用v-model这个关键字。05 条评论分享收藏感谢收起写回答当前位置 :
js手机端联动菜单选择代码,手指滑动菜单多项选择代码
167粉丝/1关注
[声明]本站素材来自用户分享,仅限学习交流请勿用于商业用途。如损害你的权益请联系客服QQ:给予处理。
举报原因:
&&垃圾广告
&&淫秽色情
&&虚假中奖
&&敏感信息
&&人身攻击
&&骚扰他人
下载该资源用户也下载了
使用邮箱登录17素材
已连续签到1天,签到3天将获得积分VIP1天赞助商推荐():
想学到点真东西?
如果你有1~3年前端开发经验,不妨
想高薪入职阿里?
想通过真实互联网项目成长自己?js做2级下拉框和一级复选框联动怎么实现啊_百度知道
js做2级下拉框和一级复选框联动怎么实现啊
我有更好的答案
一级下拉列表 可以给一个onchange事件然后获取一级下拉列表改变选项以后的值通过这个值 获取二级下拉列表里面应该有的选项清空二级下拉列表 并生成新的选项是这么个逻辑有什么不明白的 可以追问
采纳率:55%
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 335|回复: 10
checkBox关联问题
主题帖子积分
image.png.png (60.7 KB, 下载次数: 0)
16:00 上传
如图,我用图示按钮生成A,B,C三个checkBox,然后通过
image.png.png (44.41 KB, 下载次数: 0)
16:02 上传
这个代码进行设置关联关系,buttonclicked事件里面通过这段代码
image.png.png (42.57 KB, 下载次数: 0)
16:04 上传
进行联动操作,比如,我把A,B两个checkbox进行绑定操作,那么A里面的tag会存放B的位置信息,B里面的tag会存放A的位置信息,进而达到关联的目的,但是,我只绑定A,B。不知为何C里面的tag也会有值,而且是偶发性事件。
还有一个问题就是,我把A,B进行了绑定操作后,然后我又通过图示中按钮添加名为D,E,F的checkbox,不知为何D,E,F的tag的也会有值,而且也是偶发性事件。
(59.37 KB, 下载次数: 0)
15:59 上传
主题帖子积分
您好,您可以看一下这个博客。
可能对您有帮助。
请点击评分,对我的服务做出评价!5分为非常满意!
葡萄城控件服务团队
主题帖子积分
您说的这个微博和我说的问题不是一个问题,您再看一下我上面的描述
主题帖子积分
您说的这个微博和我说的问题不是一个问题,您再看一下我上面的描述
您好,上面博客中的例子就是怎样去设置一个并联的checkbox,您可以参照上面的写法,另外如果您认为这个跟您描述的问题没有关系,您能否提供一个demo,我们帮您按照您的写法具体调试一下
请点击评分,对我的服务做出评价!5分为非常满意!
葡萄城控件服务团队
主题帖子积分
问题1:如图使用工具栏新增A,B,C,D四个checkbox,然后选择依次A,B。点击最上面的关联按钮,提示关联成功,此时A,B动态关联,但是C,D也和A关联了。
问题2:基于问题1的操作,继续使用工具栏新增E,结果E也和A关联了。
问题3:我使用工具栏添加了一个下拉框,添加完毕后我又添加另外一个下拉框,弹出来的下来选项并不是全新的,而是之前维护的选项。
所有问题详细见代码附件
(85.2 KB, 下载次数: 0)
15:54 上传
(63.05 KB, 下载次数: 0)
15:52 上传
16:00 上传
点击文件名下载附件
6.33 MB, 下载次数: 1
主题帖子积分
spread》src》index.html
主题帖子积分
您好,发现您问题的原因了,是因为10.0.1的一个bug导致的,这个bug会对在线表格编辑器造成影响,我将新版本的spreadjs下载地址发给您论坛的邮箱,您下载后替换一下index/index.html中的引用即可。
请点击评分,对我的服务做出评价!5分为非常满意!
葡萄城控件服务团队
主题帖子积分
我试了一下您发给我的代码,换了之后问题3下拉框解决了,但是上述问题1和问题2还是没有解决
主题帖子积分
您好,我改了一下您的写法,这样做就没问题了,您试一下。
希望能够帮到您
15:09 上传
点击文件名下载附件
9.67 MB, 下载次数: 4
请点击评分,对我的服务做出评价!5分为非常满意!
葡萄城控件服务团队
主题帖子积分
image.png.png (63.05 KB, 下载次数: 0)
19:22 上传
您好,您给我改的并没有解决什么问题。我再给您描述一下具体的问题。
如图:我使用工具栏添加A,B,C,D复选框,然后依次点击A,B复选框,再使用页面顶端的关联按钮进行checkbox联动操作,
此时我想达到的目的是只有A和B是互相绑定的,其他的复选框应该都是单独的。结果是点击C,或者D。A也会有相应的联动效果。这个问题是因为C,D的tag里面也存了A的位置信息,这就是问题的所在。
并且我再新建E复选框,E复选框里面tag也存了A的位置信息。新建的复选框,或者没关联的复选框里面的tag值应该是空的才对。但是结果并不是这样的。这才是根本的问题。
微信认证勋章
Powered by

我要回帖

更多关于 js checkbox 的文章

 

随机推荐