我有一个以下HTML代码,用于select2组合框(pnlkr link)
<label id="label-select2Home">My Home State: </label>
<div class="select2-home" xe-field="select2Home"></div>
JS初始化:
$( ".select2-home" ).select2({
tokenSeparators: [",", " "],
allowClear: true,
placeholder: "Select a state",
data: stateData
});
我需要做什么:
我必须在附近找到标签,并将文本更改为“TEST LABEL”。
我正在尝试使用
执行上述操作$.fn.select2 = _.wrap($.fn.select2, function changeLabel(org) {
// Replace the nearby label text with "TEST LABEL"
});
我无法做到
// Replace the nearby label text with "TEST LABEL"
var args = Array.prototype.slice.call(arguments, 1); // use Array.slice function to copy the arguments array from 1-end, without 'org'
return org.apply( this, args );
它给我错误,如何调用.apply方法来操作select2并更改标签文本。
请参阅plnkr以获取上述示例
答案 0 :(得分:2)
问题是_.wrap
功能稍有破坏,因为它完全消除了$.fn.select2
的旧值。这样做会消除$.fn.select2.defaults
,这会搞砸插件。
为了解决这个问题,您可以执行以下操作:
$.fn.select2 = _.wrap($.fn.select2, function changeLabel(org) {
// Replace the nearby label text with "TEST LABEL"
$.fn.select2.defaults = org.defaults;
var args = Array.prototype.slice.call(arguments, 1);
return org.apply(this, args);
});