jquery - 如何动态地将类添加到 Selectize 选项?

标签 jquery css selectize.js

当向 select 输入添加选项时,使用 jQuery 有条件地添加一个类是微不足道的:

$("#mySelect").append(
    $("<option></option>") 
        .text(myName)
        .val(myValue)
        .addClass(myBoolean ? "class1" : "class2")
);

我的问题是:如何使用 selectize.js 实现相同的效果?

我可以使用以下代码添加一个选项(变量 mySelect 指的是类似 $("#mySelect")[0].selectize 的内容)。

mySelect.addOption({
    value: productGrouping.id,
    text:  productGrouping.name
});

在此处添加 class 选项不起作用,并且 addOption() 不返回任何内容,因此我不知道如何执行此操作。有可能吗?

最佳答案

这是 SelectizeJS Plugin 的绝佳案例.

我写了一个简单的例子,它是我认为你想要的东西——标有“favorite: true”属性的选项有一个新的类和样式,在 SelectizeJS 小部件中动态添加到它们。

selectize.plugins.js

Selectize.define('favorite_options', function(options) {
  options = $.extend({
        className : 'favorited'
    }, options);

  var favoriteOptionsClass = function(thisRef, options) {

    var self = thisRef;
    console.log({'self':self})

    var original = self.setup;
    self.setup = (function() {

        return function() {

          var option_render = self.settings.render.option;
          self.settings.render.option = function(option) {
            // "render" the original option to get the current HTML
            var html = option_render.apply(self, arguments);

            // modify HTML to add class
            var $html = $(html);
            var classes = $html.attr("class");

            if (option.favorite) {
              $html.addClass("favorite")
            }

            // return NEW $html element as HTML string
            return $('<div>').append($html.clone()).html();
          }

          original.apply(self, arguments);
        };
    })();
  }

  favoriteOptionsClass(this, options);
  return;
});

app.js

$("#wiki-select-property").selectize({
  maxItems: 1,
    valueField: 'id',
    labelField: 'title',
    searchField: 'title',
    plugins: [
      'favorite_options' 
    ],
    options: [
        {id: 1, title: 'Spectrometer', favorite: true, url: 'http://en.wikipedia.org/wiki/Spectrometers'},
        {id: 2, title: 'Star Chart', favorite: false,  url: 'http://en.wikipedia.org/wiki/Star_chart'},
        {id: 3, title: 'Electrical Tape', favorite: false,  url: 'http://en.wikipedia.org/wiki/Electrical_tape'}
    ]
})

Working Plnkr Example

关于jquery - 如何动态地将类添加到 Selectize 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39139490/

相关文章:

jquery - 由于名称而无法验证输入

jquery - 使用 ajax 的带有子行的 Shiny 数据表

jquery循环和css webkit动画

javascript - 防止Selectize自动排序

laravel - 如何正确地将 node_modules 中的库包含到您的项目中?

jquery - "data"如何提供给 jQuery 延迟对象的 did 方法?

jQuery 时间格式插件

html - 将配置文件图像添加到 Bootstrap 导航栏下拉列表

html - IE7 中等效的 CSS 是什么?

javascript - 以编程方式触发选择加载方法