2012-08-13 33 views
4

所有我为我的英文不好道歉首先...希望有人会明白我的问题,并帮助我...

我使用大量的$。员额工作的一个项目电话,我想通过为他们添加相同的验证来改进他们。

我不想一个接一个地改变所有的脚本,所以有什么方法可以重写$ .post函数来同时向它们添加相同的东西吗? 或者也许一种方法来触发每个$ .post上的另一个函数? 喜欢的东西:

$.post.each(function(){[...]}); 

$('body').on('post', function(){[...]}); 

谢谢!编辑: 终于做到了,因为我想! 这里是我的代码:

// Override $.post 
(function(){ 
    // Store a reference to the original remove method. 
    var originalPostMethod = jQuery.post; 

    // Define overriding method. 
    jQuery.post = function(data){ 
     // Execute the original method. 
     var callMethod = originalPostMethod.apply(this, arguments); 

     callMethod.success(function(){ 
      //console.log('success'); 
     }); 
     callMethod.error(function(){ 
      //console.log('error'); 
     }); 
     callMethod.complete(function(){ 
      //console.log('complete'); 
      return callMethod; 
     }); 
    } 
})(); 
+0

只是澄清一些事情:我试图重写$ .post函数,特别是'成功'和'错误'部分。 – Julien 2012-08-13 08:59:06

回答

0

您可以创建一个jQuery的插件,其确实验证,然后发布数据到服务器。基本信息可以在jQuery tutorial中找到。

2
$.post = function() { 
    var _method = $.post; 
    // do something you want 
    console.log("do someting"); 
    return _method.apply($, Array.prototype.slice.apply(arguments)); 
} 
+0

谢谢! 你的回答非常有帮助! 我现在可以覆盖$ .post函数! '(函数(){ \t \t //存储到原来的删除方法的引用 \t \t变种originalPostMethod = jQuery.post; \t \t //定义覆盖方法 \t \t jQuery.post =函数(){ \t \t \t //记录,我们呼吁我们覆盖的事实 \t \t \t的console.log( '覆盖'); \t \t \t //执行原始方法。 \t \t \t originalPostMethod.apply(this,arguments); \t \t} \t})();' 但是可以添加有关如何覆盖“成功”和$。员额功能的“错误”部分一些细节? – Julien 2012-08-13 08:32:47