Given the following code, how can I reference the input that has autocomplete bound to it from within the success()
function in the $.ajax
call? Neither $(this)
or $e
work.
$('.parent-input').autocomplete({
source: function(request, response) {
$.ajax({
url: "/chunky/bacon",
dataType: 'json',
data: {
product_id: $('#product-id').val(),
term: request.term
},
success: function(data){
var resultCount = data.length;
// I NEED TO REFERENCE .parent-input HERE
response( data );
}
});
},
minLength: 2,
select: function(event, ui){
开发者_C百科 addAssociatedProduct(ui.item.id, ui.item.value);
$(this).val('');
return false;
}
});
Save a reference to this.element
(this.element
is a jQuery object so there's actually no need to wrap it in another jQuery call):
$('.parent-input').autocomplete({
source: function(request, response) {
var element = this.element; // <-- this.element is the input the widget is bound to.
$.ajax({
url: "/chunky/bacon",
dataType: 'json',
data: {
product_id: $('#product-id').val(),
term: request.term
},
success: function(data){
var resultCount = data.length;
// element still refers to the input the widget is bound on.
// for example:
element.addClass("blue");
response( data );
}
});
},
minLength: 2,
select: function(event, ui){
addAssociatedProduct(ui.item.id, ui.item.value);
$(this).val('');
return false;
}
});
精彩评论