Итак, я довольно новичок с jquery и js, поэтому я извиняюсь, если это глупая ошибка, но после исследования я не могу понять это.Событие Jquery .change() только один раз
Итак, у меня есть список данных, загружаемых изначально в шаблон, одна часть которого представляет собой раскрывающийся список, который позволяет фильтровать данные. Моя проблема в том, что фильтрация работает только один раз? Как и в, функция .change внутри $ (document) .ready() запускает только один раз.
Существует два способа перезагрузить данные: либо щелкните логотип, либо перезагрузите его, либо используйте панель поиска. Выполнение любого из них в любое время также означает, что функция .change никогда не срабатывает снова. Пока вы не обновите страницу.
var list_template, article_template, modal_template;
var current_article = list.heroes[0];
function showTemplate(template, data)
{
var html = template(data);
$("#content").html(html);
}
$(document).ready(function()
{
var source = $("#list-template").html();
list_template = Handlebars.compile(source);
source = $("#article-template").html();
article_template = Handlebars.compile(source);
source = $("#modal-template").html();
modal_template = Handlebars.compile(source);
showTemplate(list_template,list);
$(".articleButton").click(function()
{
var index = $(this).data("id");
current_article = list.heroes[index];
showTemplate(article_template,current_article);
$('.poseThumb').click(displayModal);
});
$("#classFilter").change(function()
{
console.log("WOW!");
var classToFilter = this.value;
var filteredData =
{
heroes: list.heroes.filter(function(d)
{
if (d.heroClass.search(classToFilter) > -1)
{
return true;
}
return false;
})
};
console.log(filteredData);
showTemplate(list_template,filteredData);
$(".articleButton").click(function()
{
var index = $(this).data("id");
current_article = filteredData.heroes[index];
showTemplate(article_template,current_article);
$('.poseThumb').click(displayModal);
});
});
$("#searchbox").keypress(function (e)
{
if(e.which == 13)
{
var rawSearchText = $('#searchbox').val();
var search_text = rawSearchText.toLowerCase();
var filteredData =
{
heroes: list.heroes.filter(function(d)
{
if (d.name.search(search_text) > -1)
{
return true;
}
return false;
})
};
console.log(filteredData);
showTemplate(list_template,filteredData);
$(".articleButton").click(function()
{
var index = $(this).data("id");
current_article = filteredData.heroes[index];
showTemplate(article_template,current_article);
$('.poseThumb').click(displayModal);
});
}
});
$("#logo").click(function()
{
showTemplate(list_template,list);
$(".articleButton").click(function()
{
var index = $(this).data("id");
current_article = list.heroes[index];
showTemplate(article_template,current_article);
$('.poseThumb').click(displayModal);
});
});
//$("#logo").click();
});
function displayModal(event)
{
var imageNumber = $(this).data("id");
console.log(imageNumber);
var html = modal_template(current_article.article[0].vicPose[imageNumber]);
$('#modal-container').html(html);
$("#imageModal").modal('show');
}
Я хотел бы отметить две вещи: первое, что панель поиска отлично работает, и анонимные функции в обоих из них почти идентичны, и как я уже сказал, фильтрация работает отлично, если вы попробуете его после первоначального нагрузки. Во-вторых, эта же проблема возникает при замене .change (анонимная функция) с .on («change», анонимная функция)
Любая помощь или совет будут очень благодарны. Благодарю.
Опубликуйте свой HTML и CSS или создайте jsfiddle, чтобы мы могли взглянуть? – RSSM
Вот шаблон HTML, о котором идет речь. Я могу опубликовать все m CSS, если это необходимо, но я не вижу, как это может быть затронуто. http://pastebin.com/5zEqGTqz Спасибо! – Polyrogue