У меня есть следующие функции:Используя функцию с deferred.done()
function checkTag(dataVal) {
return $.ajax({
data: {input: dataVal}
...
});
}
В настоящее время на KeyUp, что функция вызывается как таковой:
$("#element").on("keyup", function() {
var tag = $(this).val();
checkTag(tag).done(function(data) {
...
});
});
и работает без проблем , Однако позже в моем коде я хочу снова называть это deferred.done()
. Я поэтому создал функцию как таковую:
function checkTagDone(data) {
...
}
И попытался назвать это так:
checkTag(tag).done(checkTagDone(data));
, а также попробовал:
$.when(checkTag(tag)).done(checkTagDone(data));
, но в обоих случаях я получаю variable 'data' is not found
на консоли. Я, очевидно, неправильно понял использование deferred.done
, но должен быть способ итерации по сравнению с тем же deferred.done
без необходимости репликации кода. Я могу найти документацию для поддержки нескольких экземпляров deferred.done
, следующих за одним вызовом AJAX, но нигде не могу найти решение для репликации того же deferred.done
, следующего за несколькими вызовами AJAX.
Соответствующие JQuery для object htmlinputelement
выпуска:
function checkTagDone(data, tag) {
if (data) {
...
//Create span around tag input
$(".tree").last().append("<span class='tag'>"+tag+"</span>").fadeIn(500).val("");
...
}
}
Спасибо за ваше предложение. Я попробовал, но вместо возвращаемого значения я получаю 'object htmlinputelement' ?? – Ryan
@Ryan, в каком методе –
В 'checkTagDone'. Я действительно ссылаюсь на тег в моем методе checkTagDone, поэтому предположительно заменяя 'tag' в' checkTag' самим селектором, как вы предположили, вызывает проблему, поскольку эта ссылка теперь недействительна? – Ryan