jQuery — переместить элемент с фоновым изображением большого двоичного объекта

#jquery #blob #jquery-ui-sortable

#jquery #большой двоичный объект #jquery-ui-сортируемый

Вопрос:

Возможно ли переместить элемент с помощью jquery с фоновым изображением большого двоичного объекта?

Например, атрибут style имеет следующий вид: style=»background-image: url(«большой двоичный объект: http:// localhost/b7e08807-b94f-4448-95db-1702c4508172»);

Когда я пытаюсь использовать append или insertAfter, в консоли отображается сообщение об ошибке, в котором говорится, что файл не существует.

Изначально он существовал, потому что, когда пользователь добавляет изображение на веб-сайт, он показывает предварительный просмотр изображения и добавляет изображение большого двоичного объекта в качестве фона.

Я ищу способ либо фактически переместить элемент, а не удалять его, а затем вставлять, либо заново создать файл большого двоичного объекта из URL-адреса большого двоичного объекта.

Обновить:

На данный момент у меня есть код для замены одного div на другой:

 var old_id = $('.media-temp-selected-border').parent().attr('id');
var old_html = $('.media-temp-selected-border').parent().wrap('<p/>').parent().html();
$('.media-temp-selected-border').parent().unwrap();
                
var new_id = $(this).attr('id');
var new_html = $(this).wrap('<p/>').parent().html();
$(this).unwrap();
                
$(old_html).insertAfter('#' new_id);
$(new_html).insertAfter('#' old_id);
                
$('.media-temp-selected-border').parent().remove();
$(this).remove();
  

Когда я запускаю этот код, он выдает сообщение об ошибке, что файл большого двоичного объекта не существует.

Я также пробовал этот подход:

 var original_background_image = $('.media-temp-selected-border').parent().css('background-image');
var original_data_name = $('.media-temp-selected-border').parent().attr('data-name');
var original_data_file = $('.media-temp-selected-border').parent().attr('data-file');
                
$.get(original_data_file).then(function(data) {
    var original_file = new Blob([data], { type: 'image/jpg' });
                
    var original_img = new Image();
    original_img.src = URL.createObjectURL(original_file);
                
    $(this).css('background-image', original_background_image);
    $(this).attr('data-name', original_data_name);
    $(this).attr('data-file', original_img.src);
});
                
var new_background_image = $(this).css('background-image');
var new_data_name = $(this).attr('data-name');
var new_data_file = $(this).attr('data-file');
                
$.get(new_data_file).then(function(data) {
    var new_file = new Blob([data], { type: 'image/jpg' });
                
    var new_img = new Image();
    new_img.src = URL.createObjectURL(new_file);
                
    $('.media-temp-selected-border').parent().css('background-image', new_background_image);
    $('.media-temp-selected-border').parent().attr('data-name', new_data_name);
    $('.media-temp-selected-border').parent().attr('data-file', new_img.src);
});
  

Но снова я получаю сообщение об ошибке, в котором говорится, что оно не существует.

Код, который я использую для создания изображения большого двоичного объекта, в первую очередь:

 var file = elem.files[i];

var img = new Image();
img.src = URL.createObjectURL(file);
  

Этот код вызывается, когда пользователь изначально добавляет изображение, и не имеет ничего общего с примерами над ним.

Причина, по которой я это делаю, заключается в том, что на мобильных устройствах я не могу заставить jQuery Sortable работать.

Я могу заставить его работать, используя библиотеку, которую я нашел, а затем вызывая $(‘.added-photos’).addTouch(); но проблема в том, что тогда он не позволит прокручивать прокрутку, поэтому пользователь не может прокручивать страницу вниз.

Я пробовал много разных комбинаций вещей, чтобы попытаться заставить это работать, например, включить / отключить сортировку или добавить пользовательскую функцию для вычисления задержки или использовать саму задержку в сортировке, но, к сожалению, я удалил код, который я пробовал сейчас.

ОБНОВЛЕНИЕ Я решил придерживаться jquery sortable и добавить кнопку, которую пользователь нажимает, чтобы включить или выключить сортировку.

Комментарии:

1. Можете ли вы опубликовать фрагмент? — Вы могли бы попробовать использовать .css(‘background-image’, ‘url(«большой двоичный объект: localhost /b7e08807-b94f-4448-95db-1702c4508172″)’ );

2. @DanielGonzabay Привет, Даниэль, спасибо за твой комментарий. Я обновил сообщение всем, что я пробовал до сих пор.