Пользовательский интерфейс Jquery: выбор выбираемого

0

Я создаю приложение с помощью javascript, который извлекает изображения из S3 через AWS api. Я использовал jquery_ui для добавления избранных функций в приложение ui. В настоящее время я могу выбрать изображения, которые я загрузил через s3 в своей галерее, без проблем, на основе документации jquery ui. Однако у меня есть панель навигации боковой панели, которая позволяет мне выбирать имена файлов, и я хочу, чтобы изображение в галерее также отображалось.

Я пробовал $(#image-id).addClass('ui-selected') и различные итерации одной и той же концепции, но ничего не происходит.

Любые намеки на то, что я делаю неправильно? Я не могу претендовать на роль эксперта JS.

HTML:

<div class="right-container">
        <div class="sidebar">
            <input type="file" id="file-chooser" name="files[]" multiple />
            <button id="upload-button">Upload</button>
            <div id="results"></div>
            <ul id="objects"></ul>
        </div>

        <div class="navigation">
            <div id="item-status"></div>
            <ul id="selectable-items">
            </ul>
        </div>
    </div>

    <div class="main-container">
        <div class="content">
            <div id="image-status"></div>
            <ul id="selectable-images">
            </ul>
        </div>

        <div id="details">
            <ul id="properties"></ul>
        </div>
    </div>

Соответствующий JS для отображения изображений:

// Display images from s3
$(document).ready(function(){
function listImages(){
    s3.listObjects(function (err, data) {
        if (err) {
            $('#image-status').html('Could not load objects from S3');
        } else {
            $('#image-status').html('<h3>Loaded ' + data.Contents.length + ' images from ' + bucket + '.</h3>');
            for (var i = 0; i < data.Contents.length; i++) {
                $('#selectable-images').append("<li><img id=" + data.Contents[i].Key + " src='" + origin + bucket + "/" + data.Contents[i].Key + "'>" + "</img></li>");
            }
        }
    });
}

// Selectable images
$( "#selectable-images" ).selectable({
    filter: "img",
    selected: function(event, ui) {
// Get image properties
        if($(ui.selected).attr('id') != null) {
            var file = $(ui.selected).attr('id');
            selected_image = {Key: file};
        }

// Display image properties
        s3.headObject(selected_image, function(err, data) {
            if(err) {
                console.log(err, err.stack)
            } else {
                properties = data
            }
            $('#properties').html("<li>Key: " + $(ui.selected).attr('id') + "</li> " + "<li>Content Type: " + properties.ContentType + "</li> " + "<li>Last Modified: " + properties.LastModified + "</li>")
        });
    }
});
});

JSBin: http://jsbin.com/fodovoko/2/edit?html,css,js,console,output

  • 0
    # Изображение-статус когда-либо установлен?
  • 0
    Первоначально? Нет, это просто пустой div. Это актуально? Я не общаюсь с этим вообще.
Показать ещё 8 комментариев
Теги:
amazon-web-services
amazon-s3

1 ответ

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

Если строка селектора содержит любые метасимволы, они должны быть экранированы двумя символами обратной косой черты. Мета-символы:! # $% & '() * +,./:; <=>? @[] ^' {|} ~

Например, если ваше значение id равно "image_6.jpg", ваш селектор должен быть "# image_6 \\. Jpg".

Ещё вопросы

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