`
bee1314
  • 浏览: 163655 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

简单地封装chosen支持option动态生成

 
阅读更多

为了美化select的显示效果,决定使用chosen来渲染体验。

 

因为页面中的select的option都是通过handlerbars动态的生成,所以导致options动态的改变时,chosen不能实时的刷新,停留在上一刻,影响用户体验。查询官方的api,只有通过$('#test').chosen('destroy').chosen();销毁一次再重建一次才可以正常的显示,但是如果这样写,导致页面到处是这样的垃圾代码-丑且脏, 因为有时还要判断出什么时候使用$('#test').chosen({})。于是写一个jquery的插件,来简单地封装下chosen地api,支持我们的场景。


/**
     * 到处是chosen和chosen('destroy').chosen?
     * 我们要思考root casuse?
     *   根本原因是因为使用handlerbars动态生成的select的内容
     *   导致chosen无法同步刷新,那我们为何不自己扩展呢?
     */
    (function($) {
        /**
         * 创建动态的chosen插件
         * --智能判断chosen有没有加载
         * @param param
         *    param为destroy就为销毁该chosen
         *    param为“”, 表示option不是动态的生成的,页面已经渲染了options
         *    其他的都是为动态生成的options html片段
         */
        $.fn.dynamicChosen = function(param) {
            //简单地设置chosen属性
            var opt = {
                disable_search_threshold: 10,
                no_results_text: ':),暂无匹配'
            };
            return this.each(function() {
                //得到当前的元素id,chosen的id会在元素的id基础上添加_chosen
                var id = $(this).prop('id');
                var $chosenId = $('#' + id + '_chosen');

                if (param == 'destroy') {
                    //如果没有渲染chosen,说明就是普通的select直接隐藏
                    if ($chosenId.length == 0) {
                        $(this).hide();
                    } else {
                        $(this).chosen('destroy').hide();
                    }
                } else {
                    //如果chosen没有在页面渲染
                    if ($chosenId.length == 0) {
                        //trim(param)说明option非动态生成
                        if ($.trim(param)) {
                            $(this).html(param).show().chosen(opt);
                        } else {
                            $(this).show().chosen(opt);
                        }

                    } else {
                        if ($.trim(param)) {
                            $(this).html(param).show().chosen('destroy').chosen(opt);
                        } else {
                            $(this).html(param).show().chosen('destroy').chosen(opt);
                        }
                    }
                }
            });
        }
    })(jQuery);
 

 

使用:
//销毁
$("#test").dynamicChosen('destroy')

//渲染已经存在的select和option
$("#test").dynamicChosen();

//动态的渲染
var tpl = function (templateId, data) {
        var template = Handlebars.compile($(templateId).html());
        return template(data);
    };

$("#test").dynamicChosen(tpl('#test-tpl', {list: {..}}));

 

 

分享到:
评论

相关推荐

    Jquery chosen动态设置值实例介绍

    https://github.com/harvesthq/chosen 一款选择插件,支持检索,多选,但不支持输入效果如下图 确定是用的这个哦, 不然可往下看也没有什么意义了 突然发现如果用在省市选择发现有如下问题: 1,不能动态设置值 2,...

    select chosen

    选择框需要引入资源文件 select chosen jquery min js

    chosen.jquery.json

    chosen源码 chosen-1.2.0.zip chosen.jquery.json jQuery Chosen Plugin 是一个 jQuery 插件,用来将网页中的下拉框进行功能扩展和美化。可实现对下拉框的搜索,多个标签编辑等功能 下载地址:...

    chosen.jquery.js

    chosen_v1.2.0.zip chosen.jquery.js jQuery Chosen Plugin 是一个 jQuery 插件,用来将网页中的下拉框进行功能扩展和美化。可实现对下拉框的搜索,多个标签编辑等功能 下载地址:...

    chosen多选select

    chosen

    chosen font.zip

    chosen font.zip

    chosen增强化使用

    基于chosen下拉框源版本扩展而来,美化了结构外观,扩展了一些属性及方法,使开发者在写法上更为便利。

    chosen_v1.3.0

    chosen_v1.3.0

    下拉框美化插件chosen

    下拉框美化插件chosen

    chosen jquery带搜索的下拉框简单整理

    chosen jquery带搜索的下拉框简单整理,代码简单,易读,易懂

    Bootstrap和chosen集成jQuery下拉框插件

    这是一款Bootstrap和chosen集成jQuery下拉框插件。该插件利用chosen的样式和bootstrap下拉框的功能,集成出新的下拉框效果。该下拉框支持单项选择和多项选择,支持搜索和分组功能。

    chosen(下拉框多选)

    chosen-1.4.2.zip,下拉框多选。

    chosen插件的源代码

    chosen的源代码和css和js,非常的好用,页面中再也不要自己写了 。

    chosen.jquery.rar

    一个可以美化下拉框,并且支持模糊查询的下拉框搜索jquery插件 下载地址 https://github.com/harvesthq/chosen/releases 官方文档配置 https://harvesthq.github.io/chosen/options.html 官方文档说明 ...

    Asp.net MVC Chosen插件源码实例

    asp.net MVC chosen插件源码实例 此项目可作为学习asp.net MVC项目 或学习chosen插件的实例 带有数据库 特色为运用了chosen插件 本项目中在Orders/Details/页面中Carton No和Article No为chosen插件的运用

    jquery chosen

    jquery chosen

    Chosen资源

    Chosen的css,js都包含

    chosen.jquery带搜索功能的下拉选

    chosen.jquery带搜索功能的下拉选,查询模式为reg%,带有渲染js之后刷新option

    chosen_v1.8.7.rar

    chosen1.8.7相关js、css文件,用于快速简洁实现bootstrap中select下拉框可搜索功能

Global site tag (gtag.js) - Google Analytics