Как да добавите атрибут за заглавие към тагове за избрани опции?

Използвам „Chosen plugin“ и не съм сигурен как да добавя атрибут към таговете с опции на списъка за избор.

Опитах това с помощта на jQuery на готов документ, но без успех.


person NKD    schedule 28.01.2013    source източник
comment
Много е вероятно да не можете... но можете ли да дадете по-добро обяснение за какво говорите?   -  person WiredPrairie    schedule 30.01.2013
comment
това може да ви помогне: stackoverflow.com/questions/2428212/   -  person thegrunt    schedule 30.01.2013
comment
Намерихте ли вариант за това? Изглежда, че Chosen правилно копира върху classNames от основните обекти Option, но игнорира атрибута title.   -  person Nic Cottrell    schedule 30.05.2013
comment
@NicholasTolleyCottrell все още ли се нуждаеше от отговор? Забелязах, че не си означил като любим този въпрос, така че нямаше да бъдеш уведомен за нов отговор   -  person Hashbrown    schedule 10.08.2013


Отговори (3)


трябва да промените 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>";
person Vidhyasagar SS    schedule 24.10.2013

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', или дори масив от дадени атрибути!

person Hashbrown    schedule 18.07.2013
comment
Предполага се, че опциите на избрания ви елемент вече имат зададени атрибути за заглавие, предвид коментара на @Nicholas Tolley Cottrell. Но ако не, не се страхувайте, променете функцията, за да приема масив от заглавни низове и да ги използвате вместо 'chznOpts', имайте предвид, че това ще трябва да се изпълнява всеки път, когато Chosen актуализира падащото меню, обикновено само подбудено от .trigger('liszt:updated'), така че вероятно няма да имате нужда да се тревожа за това - person Hashbrown; 18.07.2013
comment
Здравейте на всички, просто исках да ви благодаря! - person NKD; 14.10.2013

Използване на версия Chosen 1.1

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

.

option_el.innerHTML = option.search_text;    // Search
option_el.title = option.title;              // Add
person Alvis Tuna    schedule 09.03.2016