Firefox не будет сбрасывать созданный jquery элемент

0

Возможно, это дубликат, но я не знаю, как выразить то, что происходит в описании названия. У меня есть элемент изображения, который я удаляю и повторно создаю одним нажатием кнопки, в основном применяю фильтры с 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, хотя оно обновляется, каким-то образом он извлекает старое изображение (даже если оно не существует потому что на сервере, если я получаю изображение, которое применяется фильтр) и отображает старый фильтр вместо нового. Любые идеи относительно того, почему это происходит?

  • 2
    Попробуйте добавить случайный аргумент в конец нового пути изображения, как у нас в URL. Что-то вроде «test2432», любое случайное число.
  • 0
    Вы имеете в виду строку elem.src = 'contest/filtered_'+tempFilePath; заменить его чем-то вроде elem.src = 'contest/filtered_'+tempFilePath+randomNumber; ??
Показать ещё 7 комментариев
Теги:
firefox

1 ответ

2
Лучший ответ

Помимо добавления параметров, вы также можете улучшить код. Поскольку вы уже используете 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 для этого кода.

  • 0
    спасибо за решение и новый трюк jquery! : D Мне нравится, когда 6-7 строк кода становятся 2 :) +1 для простоты: D
  • 0
    Вот что JQuery может сделать для вас;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню