Я показываю серию изображений в цикле, и я пытаюсь реализовать какой-то фильтр наготы, поэтому я использую nude.js, библиотеку, которая может несколько обнаруживает наготу. Вот код:«Функция factory» не работает, JavaScript
// we're inside a loop
$(".images").prepend($("<img>").attr({src: whatever, id: uniqueid}).load(function(e) {
nude.load(e.target.id);
nude.scan(function(result) { if (!result) $(e.target).detach(); });
});
Однако отсоединяет все неправильные образа, потому что nude.js медленно и завершается после того, как цикл пошел на более поздние итерации, отделяя эти изображения вместо одного он работал на.
Я попытался с помощью функции завод:
function generateCallback(arg) {
return function(result) { if (!result) $(arg).detach(); };
}
и
nude.scan(generateCallback(e.target))
, но то же самое происходит.
Что мне нужно - это событие load
, которое удалит изображение, если оно, похоже, содержит наготу. Как я могу сделать это правильно?
EDIT: nude.js работает следующим образом:
nude.load(imageid);
nude.scan(callback); // it'll pass true or false into the callback
другое редактирование: случайно пропущен параметр из кода я отправил идентификатор, но это было в моем реальном коде, поэтому я добавил его здесь.
Где вы указываете ID изображения? (Что вы используете в 'nude.load'?). Код, который вы сейчас получили, будет работать нормально, так как 'e' является локальной переменной. FYI, вы должны установить 'src' * после * прикрепления обработчика' load', поскольку в противном случае кешированные изображения будут загружаться между установкой 'src' и прикреплением handerl. – Matt
Я устанавливаю его в 'i' с увеличением счетчика, но я пропустил это из кода, который я разместил здесь (он есть сейчас), и я уверен, что он настроен для всех.Код, который у меня есть на данный момент (обе фабричные и без функции), не работает, хотя даже после того, как вы выбрали порядок установки 'src' и обработчика нагрузки. –
itdoesntwork
Да, совет src и load был скорее FYI, а не «itll fix your problem». – Matt