所以我相当新手jQuery和js,所以我很抱歉如果这是一个愚蠢的错误,但经过研究我无法弄清楚。jquery.change()事件只会触发一次
所以我有一个数据列表最初在一个模板中加载,其中的一部分是一个下拉框,可以让您过滤数据。我的问题是,过滤只能工作一次?如在$(document).ready()中的.change函数只会触发一次。
有两种方法可以重新加载数据,或者单击徽标并重新加载它,或者使用搜索栏。任何时候执行这些操作都意味着.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');
}
我应该注意两点:第一,在搜索栏中完美的作品了,里面两个人的匿名函数几乎是相同的,就像我说的,过滤完美的作品,如果你最初的后尝试加载。第二个问题是使用.on(“change”,匿名函数)替换.change(匿名函数)时出现的相同问题。
任何帮助或建议将不胜感激。谢谢。
发布您的HTML和CSS,或创建一个jsfiddle,以便我们可以看看? – RSSM
这里是有问题的HTML模板。如果需要,我可以发布所有m CSS,但我不明白它会如何受到影响。 http://pastebin.com/5zEqGTqz 谢谢! – Polyrogue