Я использую эту библиотеку jQuery: http://hayageek.com/docs/jquery-upload-file.php

Мой HTML выглядит так:

<div class="fileuploader" data-id="153777230352"></div>

Код библиотеки инициализации jQuery выглядит так.

$(".fileuploader").uploadFile({
    url: "upload.php",
    fileName: "myfile",
    onSuccess: function(files, data, xhr, pd) {
        var near = $(this).attr('data-id');
    }
});

Я пытаюсь получить значение идентификатора данных из триггера успеха.

Я думал, что $(this) получит это, но, похоже, не могу понять, каков контекст this.

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

Есть ли способ получить такой идентификатор данных?

3
Charlie Smith 24 Сен 2018 в 10:12

2 ответа

Лучший ответ

Проблема заключается в том, что this в обработчике onSuccess не является ссылкой на элемент, для которого была вызвана функция uploadFile(). Это ссылка на родительский объект настроек.

Чтобы сохранить ссылку на элемент, для которого вы вызываете библиотеку, вы можете вместо этого явно использовать each(), например:

$(".fileuploader").each(function() {
  var $uploader = $(this);
  $uploader.uploadFile({
    url: "upload.php",
    fileName: "myfile",
    onSuccess: function(files, data, xhr, pd) {
      var near = $uploader.data('id');
      // work with 'near' here...
    }
  });
});
2
Rory McCrossan 24 Сен 2018 в 07:39

Вы можете получить атрибут HTML элемента из jQuery.

var near = $(this).data('id');
console.log(near);
-3
Shahaji Deshmukh 24 Сен 2018 в 07:22