與
SelectParser.prototype.add_option
裏面我使用jQuery得到了我的自定義屬性,然後我又將其作爲一個選項的ID。
的SelectParser.prototype.add_option
樣子:
SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
if (option.nodeName.toUpperCase() === "OPTION") {
if (option.text !== "") {
if (group_position != null) {
this.parsed[group_position].children += 1;
}
this.parsed.push({
user_id: $(option).attr('data-user-id'),
array_index: this.parsed.length,
options_index: this.options_index,
value: option.value,
text: option.text,
html: option.innerHTML,
title: option.title ? option.title : void 0,
selected: option.selected,
disabled: group_disabled === true ? group_disabled : option.disabled,
group_array_index: group_position,
group_label: group_position != null ? this.parsed[group_position].label : null,
classes: option.className,
style: option.style.cssText
});
} else {
this.parsed.push({
array_index: this.parsed.length,
options_index: this.options_index,
empty: true
});
}
return this.options_index += 1;
}
};
正如你注意到我把只有這user_id: $(option).attr('data-user-id'),
行代碼。
然後將數據用戶ID推向<li>
列表我'data-user-id': item.user_id
加入這一行Chosen.prototype.choice_build
因此在隨後結束它看起來像:
Chosen.prototype.choice_build = function(item) {
var choice, close_link,
_this = this;
choice = $('<li />', {
"class": "search-choice"
}).html("<span>" + (this.choice_label(item)) + "</span>");
if (item.disabled) {
choice.addClass('search-choice-disabled');
} else {
close_link = $('<a />', {
"class": 'search-choice-close',
'data-option-array-index': item.array_index,
'data-user-id': item.user_id
});
close_link.bind('click.chosen', function(evt) {
return _this.choice_destroy_link_click(evt);
});
choice.append(close_link);
}
return this.search_container.before(choice);
};
這就是它!你可以用這種方式按你想要的那樣推送儘可能多的自定義屬性。
我無法在'selected'中找到任何默認屬性/方法來完成這項工作。你不得不使用jquery自定義代碼來做到這一點。 – Mohammad
@穆罕默德謝謝。 –