вы делаете .on('click')
событие directclty для динамически генерируемого html.Это не сработает.Потому что, когда скрипт был загружен изначально, нет элемента с классом posters
.
. Вы должны использовать что-то вроде этого
$("#not_dynamic_element").on("click", ".posters", function(){
// Code here
});
Логика в том, что вы должны выбрать элемент, которыйне загружается динамическит.е. статический элемент, который является предком класса posters
.
Например, скажем, у вас есть div с классом posters-container
, который уже присутствует при загрузке страницы.Вы добавляете тег img
с классом posters
к этому div.Так что вам нужно нажать на все теги img
с классом posters
, вы можете написать,
$(".posters-container").on("click", ".posters", function(){
// Code here
});
Надеюсь, вы поняли логику и в чем проблема.
ОБНОВЛЕНИЕ - ВОПРОС ЛОГИКИ В FIDDLE
Я вижу, что не так в вашей скрипке.Я пытаюсь сделать это простым.Так что проверьте этот код, который вы написали
axios.get(finalSearch)
.then(function(response){
// console.log(response);
let movies = response.data.Similar.Results;
// let posters = response.data.results.poster_path;
for (i=0; i < movies.length; i++){
// console.log(movies[i].Name);
var movArr = movies[i].Name;
var movStr = movArr.split(" ");
var movieTitles = movStr.join("+")
getMoviePosters(movieTitles);
}
})
.catch(function(err) {
console.log(err);
})
В этом коде вы можете видеть, что вы вызываете функцию getMoviePosters(movieTitles)
внутри цикла for.Ваш цикл for содержит следующую строку, которую вы используете для выбора динамически сгенерированного элемента постера фильма.
$("#movPoster").on("click", function () {
console.log("I clicked a poster!");
})
Поэтому я бы предложил вам вызвать эту функцию щелчка после цикла for, как показано ниже (Удалить предыдущий код).Также добавьте класс posters
, чтобы щелкнуть функцию.
axios.get(finalSearch).then(function(response){
// console.log(response);
let movies = response.data.Similar.Results;
// let posters = response.data.results.poster_path;
for (i=0; i < movies.length; i++){
// console.log(movies[i].Name);
var movArr = movies[i].Name;
var movStr = movArr.split(" ");
var movieTitles = movStr.join("+")
getMoviePosters(movieTitles);
}
$("#movPoster").on("click", '.posters', function () {
console.log("I clicked a poster!");
})
})