Je vais avoir un petit problème avec un peu de jQuery:jQuery liaison anticipée une fonction possible?
function getQuickResults(terms)
{
var url = '/Search/PreviewSearch';
$.ajax({
type: "POST",
url: url,
data: { terms: terms },
dataType: "json",
error: function(xhr, status, error) {
alert(error);
},
success: function(json) {
$("#quickSearchResults").empty();
for (var i = 0; i < json.length; i++) {
var title = json[i].Title;
$("#quickSearchResults").append($("<span class='quickSearchResult' />"))
.children(":last")
.append(json[i].Title)
.append("<br />");
}
$("#quickSearchResults").children(":last").css({ 'border-bottom': 'none' });
if (json.length > 0) {
$("#quickSearchResults").show();
}
else {
$("#quickSearchResults").hide();
}
}
});
}
En gros, cela est ma fonction ajax pour un système d'indices d'entrée. À la touche, il envoie une requête ajax pour rechercher et renvoie une petite liste déroulante de valeurs.
Ce que je voudrais faire, c'est quand un utilisateur clique sur l'une des plages dans les résultats, il copie cette étendue à la zone de texte. J'ai donc essayé ceci:
$("#quickSearchResults").append($("<span class='quickSearchResult' />"))
.children(":last")
.append(json[i].Title)
.append("<br />")
.click(function(evt) {
$("#searchBox").val(json[i].Title);
});
Mais cela ne fonctionne pas. J'ai essayé d'assigner une variable à json [i] .Title et d'utiliser cela à la place, mais il semble juste toujours retourner le titre du dernier résultat. Je pense que c'est probablement un problème contraignant, mais je ne sais pas s'il y a moyen de contourner le problème.
Wow. C'est exactement ce que je cherche! Merci d'avoir signalé cela. – James