jquery + javascript:document.readyとajaxの負荷間で重複関数を統合する
-
27-10-2019 - |
質問
ajaxify.jsプラグインを使用しています https://github.com/browserstate/ajaxify コンテンツを動的にロードします。
私にはたくさんあります click
ドキュメントの準備が整っているが、それらの関数をAjaxロード関数の内側に追加して、クリックイベントを新しく追加されたコンテンツに再バインドする機能を追加する必要があります。私は単一のセットを使用しようとしました live
以前は機能しましたが、機能しませんでした。
とにかく、私は次のコードを2回持っていますが、 document.ready(function(){ })
そして、コンテンツがロードされた後、もう一度ajaxify.jsの内部。
私はそれが余分なものであることを知っていますが、他の場所に「含める」ことができるように、一度機能を書く方法がわかりません。これらの関数を最適化して、それらを統合して効率的な方法で再度使用できるようにするにはどうすればよいですか?
ありがとうございました!
var $filterclear = $('.filters .filter-clear'),
filtercount = $filterclear.length,
$searchedfor = $('.searched-for'),
is_search = $searchedfor.length;
$filterclear.bind('click', function(){
var $me = $(this);
if(filtercount == 3) {
$('.clear-all.filter-clear').addClass('filter-out').fadeOut('fast');
$(this).addClass('filter-out').fadeOut('fast');
} else {
$(this).addClass('filter-out').fadeOut('fast');
}
if($me.hasClass('clear-all') || filtercount == 1) {
$filterclear.addClass('filter-out').fadeOut('fast');
if(is_search !== 0) {
$('.filters').fadeOut();
}
}
});
$('.tag.remove-term').bind('click', function(){
var $me = $(this),
mytext = $me.text(),
$myfilter = $('.filters .filter-clear:contains("'+ mytext +'")');
if(filtercount == 3) {
$('.clear-all.filter-clear').addClass('filter-out').fadeOut('fast');
$myfilter.addClass('filter-out').fadeOut('fast');
} else {
$myfilter.addClass('filter-out').fadeOut('fast');
}
});
$searchedfor.find('.filter-clear').bind('click',function(){
$searchedfor.fadeOut();
});
解決
新しい関数を定義することは機能するはずです(テストしませんでした):
var $filterclear = $('.filters .filter-clear'),
filtercount = $filterclear.length,
$searchedfor = $('.searched-for'),
is_search = $searchedfor.length;
var doSomething($myfilter) {
if(filtercount == 3) {
$('.clear-all.filter-clear').addClass('filter-out').fadeOut('fast');
}
$myfilter.addClass('filter-out').fadeOut('fast');
};
$filterclear.bind('click', function() {
var $me = $(this);
doSomething($me);
if($me.hasClass('clear-all') || filtercount == 1) {
$filterclear.addClass('filter-out').fadeOut('fast');
if(is_search !== 0) {
$('.filters').fadeOut();
}
}
});
$('.tag.remove-term').bind('click', function(){
var $me = $(this),
mytext = $me.text(),
$myfilter = $('.filters .filter-clear:contains("'+ mytext +'")');
doSomething($me);
});
$searchedfor.find('.filter-clear').bind('click',function(){
$searchedfor.fadeOut();
});
所属していません StackOverflow