jqueryとjsはかなり初心者ですので、愚かなエラーですが、調査した後には分かりません。Jquery .change()イベントは一度だけ発生します
私は最初にテンプレートに読み込まれたデータのリストを持っています。その一部はデータをフィルタリングできるドロップダウンボックスです。私の問題は、フィルタリングは一度しか動作しないということですか?のように、$(document).ready()の中の.change関数は一度だけ起動します。
データを再読み込みするには、ロゴをクリックしてすべてを再読み込みするか、検索バーを使用する2つの方法があります。これらのいずれかをいつでも実行すると、.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');
}
私は2つのことに注意する必要があります。まず、検索バーが完全に動作し、それらの両方の内側に無名関数はほぼ同一であり、私が言ったように、あなたが最初の後にそれをしようとした場合、フィルタリングが完璧に動作することを負荷。 2番目の問題は、.change(匿名関数)を.on( "匿名関数")と置き換えて同じ問題が発生することです。
ご迷惑をおかけして申し訳ありません。ありがとう。これは何度もそれがより発射できることに動作します
$('body').on('click','.articleButton', function() {
//Do your stuff...
})
$('body').on('click','#classFilter', function() {
//Do your stuff...
})
$('body').on('keypress','#searchbox', function() {
//Do your stuff...
})
$('body').on('click','#logo', function() {
//Do your stuff...
})
:
HTMLとCSSを投稿するか、またはjsfiddleを作成して見てみましょうか? – RSSM
問題のHTMLテンプレートは次のとおりです。私は必要に応じてすべてのmのCSSを投稿することができますが、私はそれが影響を受ける可能性があります表示されません。 http://pastebin.com/5zEqGTqz ありがとう! – Polyrogue