关于联动这一块

关于联动这一块

老师联动这一块我思路有点混乱了,麻烦老师给我讲解讲解这一块的思路,谢谢。


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,后面没有关于联动这方面的作业,了解了原理即可。

祝学习愉快!

好帮手慕星星 2020-04-28 19:34:05

同学你好,可以看下面的注释:

/ ui-cascading
$.fn.UiCascading = function() {
    var ui = $(this);
    // 获取所有下拉列表元素
    var selects = $('select', ui);

    //给所有下拉列表绑定改变事件
    selects
        .on('change', function() {
            // 获取当前列表选中的值,例如'朝阳区'
            var val = $(this).val();
            // 获取当前select的索引

            var index = selects.index(this);

            //	触发下一个 select 的更新,根据当前的值

            // 获取当前下拉列表的data-where属性值
            var where = $(this).attr('data-where');

            // 判断data-where属性是否有值,如果有就分隔,没有赋值为[]
            where = where ? where.split(',') : [];
            // 在属性值中添加当前下拉列表选择的值
            where.push($(this).val());

            // 更新当前的下一个列表data-where属性值
            selects.eq(index + 1)
                .attr('data-where', where.join(','))
                .triggerHandler('reloadOptions');
            //	触发下一个之后的所有 select  的初始化(清除不应该的数据项)
            ui.find('select:gt(' + (index + 1) + ')').each(function() {
                $(this)
                    .attr('data-where', '')
                    .triggerHandler('reloadOptions');
            })


        })
        // 绑定自定义reloadOptions事件
        .on('reloadOptions', function() {
            // 获取select的data-search属性值
            var method = $(this).attr('data-search');
            // 获取select的data-where属性值并分隔为字符串
            var args = $(this).attr('data-where').split(',');
            // 从通过字符串参数从data.js文件中获取数据
            var data = AjaxRemoteGetData[method].apply(this, args);
            var select = $(this);
            // 将原有的option移除
            select.find('option').remove();
            // 将获取的指定数据遍历,和option标签拼接,重新添加到select中
            $.each(data, function(i, item) {
                var el = $('<option value="' + item + '">' + item + '</option>');
                select.append(el);
            });
        });
    // 默认第一个的select触发更新事件

    selects.eq(0).triggerHandler('reloadOptions');
}

这段代码主要操作就是选择一个select之后,下一个select会更新data-where记录,下面所有的select会根据当前的选择更新内容。

自己再测试理解下,祝学习愉快!

  • 提问者 幻城163630 #1
    好的。老师我明白了。谢谢你,但是我还想问一下后面部分还有没有关于联动这一块的作业之类的,我还想多练习一下下。
    2020-04-29 17:05:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师