jquery + javascript: консолидация дублирования функций между Document.Ready и Ajax Load
-
27-10-2019 - |
Вопрос
Я использую плагин ajaxify.js https://github.com/browserstate/ajaxify Для динамической загрузки контента.
У меня есть несколько click
Функции, которые я привязываю на готовом документе, но должен дополнительно поместить эти функции внутри моей функции загрузки AJAX, чтобы повторно связывать события клика с вновь добавленным контентом. Я пытался использовать один набор live
Функции ранее, но они не работали.
В любом случае у меня дважды есть следующий код, один раз внутри 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();
});