为了避免重复,我希望在几个ajax调用中使用函数。怎么回事?
的像:
//use of content this function in other function(ajax call)
$(function num_bg () {
var total = $('.pag a', '.ser').size();
if (total == 0) {
$('.number').css('display','none');
}
});
// First ajax call
function pagination(e) {
e.preventDefault();
var dataObj = $('form').serialize();
$.ajax({
type: "POST",
dataType: "html",
url: 'dirc',
data: dataObj,
cache: false,
success: function (html) {
var $html = $(html);
$('#num_count').replaceWith($html.find('#num_count'));
$('tr#paginate').replaceWith($html.find('tr#paginate'));
$('.pagination').replaceWith($html.find('.pagination'))
$('#erro_find').remove();
num_bg (); // This is same function above (this don't work)
}
});
return false;
}
$('form').live('change', pagination);
$('.pag a').live('click', pagination);
$('#input').live('keyup', pagination);
//Second ajax call
$('#delete').click(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: 'diuarsl',
data: dataString,
cache: false,
success: function(html){
var $html = $(html);
$('#num').replaceWith($html.find('#num_count'));
$('tr#pag').replaceWith($html.find('tr#paginate'));
$('.pag').replaceWith($html.find('.pagination'));
num_bg (); // This is same function above (this don't work)
}
}
})
});
答案 0 :(得分:2)
问题是你的函数已经封闭了。闭包这种方式非常有用,因为它意味着您不会使用变量(例如窗口)污染任何其他命名空间。
删除newbg函数周围的$(...)
。
// num_bg is now available as a global
function num_bg () {
var total = $('.pag a', '.ser').size();
if (total == 0) {
$('.number').css('display','none');
}
}
$( num_bg ); // invoke the function when the DOM is ready
jQuery中的$(function() { });
会将处理程序附加到DOM ready事件。通常,如果您正在使用DOM,那么您需要将所有代码包装在其中。
答案 1 :(得分:1)
只需删除函数表达式周围的$(..)
调用(并将其作为函数声明)。