如何删除data("autocomplete")...
末尾的代码并将其放入函数中?
var input = $("#CountryL");
$(input).autocomplete({
minLength: 0,
source: $(input).data('url')
}).data("autocomplete")._renderItem = function (ul, item) {
var tmp = $("<div>").setTemplate($("#"+$(input).data('template')).html());
tmp.processTemplate(item);
$("<li></li>").data("item.autocomplete", item)
.append($(tmp).html())
.appendTo(ul);
return;
};
我希望能够做到:
function templateOverride(object){
object.data("autocomplete")._renderItem = function (ul, item) {
var tmp = $("<div>").setTemplate($("#"+$(input).data('template')).html());
tmp.processTemplate(item);
$("<li></li>").data("item.autocomplete", item)
.append($(tmp).html())
.appendTo(ul);
return;
}
var input = $("#CountryL");
$(input).autocomplete({
minLength: 0,
source: $(input).data('url')
}).templateOverride(this);
发布于 2011-01-30 14:48:57
你就快到了。只需扩展jQuery:
$.fn.extend({
templateOverride: function () {
return this.each(function () {
$(this).data("autocomplete")._renderItem = function (ul, item) {
var tmp = $("<div>").setTemplate($("#"+$(input).data('template')).html());
tmp.processTemplate(item);
$("<li></li>").data("item.autocomplete", item)
.append($(tmp).html())
.appendTo(ul);
};
});
}
});
用法(几乎)与你所说的完全一致。
$("#CountryL").autocomplete({
minLength: 0,
source: $(input).data('url')
}).templateOverride();
这是一个小小的解释:
// fn.extend() adds functions to the jQuery function library
$.fn.extend({
// it expects an object, so here we use object literal syntax (key: value)
templateOverride: function () {
// here "this" refers to the jQuery object you called the function on,
// which is an array, so we iterate it with each() *and* return it
// so jQuery function chaining does not break.
return this.each(function () {
// here "this" refers to the individual HTML objects, so we must wrap
// it in a jQuery call ($) to have access to its data()
$(this).data("autocomplete") // ... your code
});
}
});
https://stackoverflow.com/questions/4841542
复制相似问题