JQuery回调并返回第一个调用?

时间:2011-09-23 23:35:12

标签: jquery load jquery-load jquery-callback

我为此功能加载外部页面。从DIV id。抓取页面URL。

$(".contentArea").load($('.contentArea').attr('id'), function(){

加载页面,得到一个数据表,所以我把它添加到回调中。

$('.datatable').dataTable( {

在数据表中,我有一个编辑器按钮,所以我使用数据表回调函数调用编辑器而不刷新页面:

"fnDrawCallback": function(){

    $(".contentEditor").click(function() {

        $(".contentArea").load($('.contentEditor').attr('id'), function(){

在这个范围内,内容编辑器的加载方式与我用来加载包含数据表的页面的方式相同。 (页面URL在按钮ID上传递)。

我现在卡住了。在这个编辑器上,我需要提交表单,我希望它使用jquery加载提交,这样页面不会刷新,提交表单后,我想将冲浪者发送回数据表页面(当时首次加载的页面)页面已加载)。我将执行更新已编辑内容所需的操作。有帮助吗?感谢。

  • 我使用数据服务器端ajax加载。这就是我使用回调的原因。

        $(".contentArea").load($('.contentArea').attr('id'), function(){
            $('.datatable').dataTable( {
                "bJQueryUI": true,
                "sScrollX": "",
                "bSortClasses": false,
                "aaSorting": [[0,'asc']],
                "bAutoWidth": true,
                "bInfo": true,
                "sScrollY": "100%", 
                "sScrollX": "100%",
                "bScrollCollapse": true,
                "sPaginationType": "full_numbers",
                "bRetrieve": true,
                "bProcessing": true,
                "bServerSide": true,
                "sAjaxSource": $('.datatable').attr('id'),
                "fnDrawCallback": function(){
                    $(".contentEditor").click(function() {
                        $(".contentArea").load($('.contentEditor').attr('id'), function(){
                            $( "select, input:checkbox, input:radio, input:file").uniform(),
                            $( ".datepicker" ).datepicker({dateFormat: 'yy-mm-dd' }),
                            $("#validation").validationEngine(),
                            $('input[title]').tipsy(),
                            $('textarea.tinymce').tinymce({
                                 // Location of TinyMCE script
                                script_url : '../scripts/tinyeditor/tiny_mce.js',
    
                                // General options
                                theme : "advanced",
                                plugins : "table,advhr,advimage,advlink,inlinepopups,preview,media,paste,fullscreen,visualchars,xhtmlxtras",
    
                                // Theme options
                                theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,outdent,indent,blockquote,|,forecolor,backcolor",
                                theme_advanced_buttons2 : "formatselect,fontselect,fontsizeselect,|,removeformat,|,hr,|,undo,redo,|,sub,sup,|,charmap,|,cite",
                                theme_advanced_buttons3 : "tablecontrols,|,link,unlink,anchor,|,image,preview,media,|,cleanup,code,fullscreen",
                                theme_advanced_toolbar_location : "top",
                                theme_advanced_toolbar_align : "left",
                                theme_advanced_statusbar_location : "bottom",
                                theme_advanced_resizing : true
                            });
                        });
                    });
                }});
            });  
    

1 个答案:

答案 0 :(得分:1)

要提交表单,请使用$.post()$(form).serialize()。然后,在$.post()的成功处理程序中,再次使用.load()

$.post(url, $("#myForm").serialize(), function(data) {
    $(".contentArea").load(...);
});

或者,如果从提交表单返回的内容是您要在.contentArea中显示的html,则可以通过使用{{1}中返回的html来节省额外的.load()调用。 }}:

.contentArea

编辑:创建处理不同任务的函数。顺便说一句,不要使用$.post(url, $("#myForm").serialize(), function(data) { $(".contentArea").html(data); }); 来存储网址。创建自定义属性...也许id

contentUrl

我已将其分解为可能过多的单个函数,但关键是不要过度使用匿名函数,尤其是当您想要重用函数时。