我在我的脚本中进行AJAX调用,从服务器获取HTML。我需要用返回的数据替换现有的HTML。替换工作,但变量失去了他们的上下文,这意味着我无法再次触发替换函数。
这就是我的JavaScript:
(function($){
var $weatherCard = $(".weather-card");
var $reloadWeather = $(".reload-weather");
var $newLocation = $("#zip").val();
var $featureParent = $(".pb-f-global-weather-forecast");
$reloadWeather.on('click', function() {
var $newLocation = $("#zip").val();
changeLocation($newLocation);
});
function changeLocation(location) {
$.ajax({
"url" : $reloadWeather.data('path') + '?' +
'contentConfig={\"Type\":\"forecast\",' +
'\"City\":\"' + location + '\",' +
'\"Country\":\"USA\",' +
'\"Count\":\"5\"' + '}',
//'&customFields={\"enabledLoadMore\":true,' + '"layoutMode":' + '"' + $loadMoreButton.data('feed-layout') + '"' + ',' + '"dateType":' + '"' + $loadMoreButton.data('date-type') + '"' + ',' + '"hideSubhead":' + '"' + $loadMoreButton.data('show-sub') + '",' + '"hideDate":' + '"' + $loadMoreButton.data('show-date') + '",' + '"hideByline":' + '"' + $loadMoreButton.data('show-byline') + '"' + '}',
"timeout" : "1500",
"method": "GET",
"accept" : false
}).done(function(data) {
$featureParent.replaceWith(data.rendering);
});
};
换句话说,一旦replaceWith()
函数被触发,我希望将顶部列出的变量重新赋值给同一个元素。在done函数中重新分配变量似乎不起作用。