如何将标题属性添加到选择的选项标签?

时间:2013-01-28 19:45:17

标签: jquery-chosen

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

我已经尝试过使用jQuery准备文档,但没有运气。

3 个答案:

答案 0 :(得分:4)

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

使用Chosen 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>";

答案 1 :(得分:1)

I have tried this..but no luck

这取决于你的尝试。 给这个函数一个go,用你希望它所选择的副本继承标题的select元素调用它

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
你的问题可能是你在选择之前做了你尝试过的任何事情.js已经转换了你的选择框,但是这个功能应该减轻它。

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

我假设你使用的是jQuery而不是Prototype(给出你的最后一行)
所以你可以传入'#id'而不是&lt; DOMObj&gt;如果你想要的话 可以修改代码以克隆给定属性,而不是'title',甚至是给定属性的数组!

答案 2 :(得分:0)

使用选择的1.1版本

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

option_el.innerHTML = option.search_text;    // Search
option_el.title = option.title;              // Add