3

我正在使用“选择的插件”,但不确定如何将属性添加到选择列表的选项标签中。

我已经在准备好的文档上使用 jQuery 进行了尝试,但没有运气。

4

3 回答 3

4

您需要将 Chosen.Jquery.js 修改为以下内容以使其工作

使用选择 1.0 版本

第62行添加这行代码

this.parsed.push({
        array_index: this.parsed.length,
        options_index: this.options_index,
        value: option.value,
        text: option.text,
        html: option.innerHTML,
    title: option.title, // this is Line 62 add this line
        selected: option.selected,
        disabled: group_disabled === true ? group_disabled : option.disabled,
        group_array_index: group_position,
        classes: option.className,
        style: option.style.cssText
      });

修改第 255 行

return "<li title=\"" + option.title +"\"  class=\"" + (classes.join(' ')) + "\"" + style + " data-option-array-index=\"" + option.array_index + "\">" + option.search_text + "</li>";
于 2013-10-24T09:36:47.630 回答
1

I have tried this..but no luck

这取决于你尝试了什么。试试这个函数,用你希望它选择的对应物继承标题的选择元素调用它

function cloneTitles(selectBox) {
    //make sure it has already been chosen-ised
    selectBox = $(selectBox).chosen();

    //get all the original options, should be in same order as chosen ones
    var origOpts = selectBox.find('option');

    //get all the chosen-created 'options'
    //NB there may be a better way to grab the chosen created element
    var chznOpts = selectBox.next().find('.active-result')

    //foreach option
    origOpts.each(function(index, origOpt) {
        //copy the attribute from the original
        $(chznOpts[index]).attr('title', $(origOpt).attr('title'));
    });
}

I have tried this on document ready
您的问题可能是您在 selected.js 转换您的选择框之前所做的任何尝试,但此功能应该可以缓解这种情况。

此外,如果您需要多个选择框,只需使用.each()
(例如selectArray.each(function(i, select) { cloneTitles(select); })

我假设您使用的是 jQuery 而不是 Prototype(给定您的最后一行)
所以如果您愿意,您可以传入 '#id' 而不是 <DOMObj> 。
可以修改代码以克隆给定属性,而不是'title',甚至是给定属性的数组!

于 2013-07-18T05:06:24.093 回答
0

使用选择的 1.1 版本

html: option.innerHTML,   // Search
title: option.title,      // Add

.

option_el.innerHTML = option.search_text;    // Search
option_el.title = option.title;              // Add
于 2016-03-09T21:49:08.777 回答