私が取り組んでいるプロジェクトの検索ツールを構築しようとしています。基本的に、私はページ上の項目のリストをフィルタリングし、一致するものを表示しています。私が抱えている問題は、ページネーションを使用していて、最初の文字が入力されるたびに2番目の文字を入力するまでページングイベントが発生しないということです。最初の文字が入力に入力されたとき、下部のcontext.paginate()およびcontext.createPages(4)の関数は起動しません。それ以外は素晴らしい作品ですが、それはちょっとした迷惑なのですが、その特定の出来事がなぜすぐには発射されないのか分かりません。 unwrapを含むすべてのものが、直近の2つの関数ではなくただちに動作します。誰でも、なぜそれがあるのかについてのアイデアはありますか?最初の文字が入力された直後にjquery keyupイベントを発生させるにはどうすればいいですか?
$(this).on("keyup change", function() {
var searchVal;
console.log(searchVal);
radios = $(section).prev(".filterform").find("input[type='radio']");
//Find which search filter option is checked and use that class for the find
for (var i = 0; i < radios.length; i++) {
if (radios[i].name && $(radios[i]).prop("checked")) {
searchVal = radios[i].value;
}
}
var filter = $(this).val();
if (filter) {
$(section).find("." + searchVal + ":not(:contains(" + filter + "))").closest(".projects").slideUp();
$(section).find("." + searchVal + ":contains(" + filter + ")").closest(".projects").slideDown();
} else {
$(section).find(".projects").slideDown();
}
$(section).find(".pages > .projects").unwrap();
context.createPages(4);
context.paginate();
});
あなたのソリューションのすべては素晴らしいですが、私はいくつかの掘り出し物を見つけましたが、犯人を見つけましたが、まだ解決できません。私はキーを押した後に隠されていない項目の現在の数を取得する必要があります。問題は、最初の文字の後に番号を更新しないで、イベントが発生しているのに間違ったデータを出してしまうことです。ここで私の項目変数です:$(this._element).find( "。projects:visible")私はこれをkeypressで更新しようとしていますが、すぐにはしません –
私はページ分割機能のために500msのタイムアウトを追加して解決しました。 –