Возможно, это дубликат, но я не знаю, как выразить то, что происходит в описании названия. У меня есть элемент изображения, который я удаляю и повторно создаю одним нажатием кнопки, в основном применяю фильтры с php к изображению и удаляю предыдущий элемент, чтобы заменить его новым изображением, чтобы отобразить новый фильтр.
код для создания элемента:
function pictureReset(data) {
$( ".filteredImg" ).remove();
var elem = document.createElement("img");
elem.setAttribute("class", "filteredImg");
elem.setAttribute("height", "328");
elem.setAttribute("alt", "");
elem.src = 'contest/filtered_'+tempFilePath;
document.getElementById("filteredImgContainer").appendChild(elem);
}
код для применения фильтра: (у меня есть несколько фильтров, но код один и тот же, они просто называют другой php файл
$('#sepia').click(function () {
var filePathName = tempFilePath;
$.ajax({
type: 'POST',
url: 'php/sepia.php',
dataType : 'text',
data: {
FilePath : filePathName
},
success: function (data) {
pictureReset();
}
}).done(function(response){console.log(response);});
});
теперь проблема в том, что она отлично работает на хроме, т.е. когда я нажимаю кнопку, старое изображение удаляется и заменяется новым отфильтрованным изображением, на Firefox, хотя оно обновляется, каким-то образом он извлекает старое изображение (даже если оно не существует потому что на сервере, если я получаю изображение, которое применяется фильтр) и отображает старый фильтр вместо нового. Любые идеи относительно того, почему это происходит?
Помимо добавления параметров, вы также можете улучшить код. Поскольку вы уже используете jQuery.
Вы можете заменить этот код:
function pictureReset(data) {
$( ".filteredImg" ).remove();
var elem = document.createElement("img");
elem.setAttribute("class", "filteredImg");
elem.setAttribute("height", "328");
elem.setAttribute("alt", "");
elem.src = 'contest/filtered_'+tempFilePath;
document.getElementById("filteredImgContainer").appendChild(elem);
}
С:
function pictureReset(data) {
var elem = $('<img class="filteredImg" alt="" style="height:328px;" src="contest/filtered_' + tempFilePath + '?t="' + $.now() + ' />');
$("#filteredImgContainer img.filteredImg").replaceWith(elem);
}
Я использовал jQuery replaceWith для этого кода.
elem.src = 'contest/filtered_'+tempFilePath;
заменить его чем-то вродеelem.src = 'contest/filtered_'+tempFilePath+randomNumber;
??