Jquery重新加载当前选项卡

时间:2013-11-22 01:05:59

标签: jquery jquery-ui jquery-plugins

我使用Jquery 1.4.2。以下是使用标签的代码。

   <div id="tabs">
      <ul>
          <li><a href="#unit"><span>Unit Information</span></a></li>
          <li><a href="#documents"><span>Documents</span></a></li>
          <li><a href="#x"><span>x</span></a></li>
          <li><a href="#y"><span>y</span></a></li>
      </ul>
      <div id="unit"></div>
      <div id="documents">
         <input type="button" id="add_file" onclick="add_file()" />
         <table>
           <tr>
             <td>ID</td>
             <td>File Name</td>
           </tr>
         </table>
      </div>
      <div id="x"></div>
      <div id="y"></div>
    </div>

当我运行命令

$('#tabs').tabs('option','selected')

它正确显示了tabIndex。

但是

$('#tabs').tabs('load',1)

似乎根本不起作用。它没有重新加载标签内容。

这是Jquery版本的问题吗?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,那不是jQuery版本的问题。尽管如此,您的设计是不正确的。但是,由于您使用的是jQuery 1.4.2版,因此您应该知道you must use jQueryUI 1.8.24 or less。因此:

<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/themes/smoothness/jquery-ui.css" />
</head>


回到你的问题。由于您正在上传文件,因此您将文件(可能通过表单或更好的AJAX)发布到另一个PHP文件。 Javascript没有机会展示它。

使用AJAX添加文档的工作原理(以及发生的一切/以您希望的方式显示)。你可以手动完成,或者我可以推荐其中一个插件:

为了证明我的观点,在下面的例子中,我使用js / jQ模拟“添加文件”。正如你在演示中看到的那样,新数据显得很好。

jsFiddle demo

$('#add_file').click(function() {
    $('#documents').find('table').append('<tr><td>002</td><td>another_file.doc</td></tr>');
});

有关AJAX如何工作的一些简单示例,请参阅这些SO帖子:

请上传任何有用的帖子。

以下是您要执行的操作的代码示例。该示例有效,但我很遗憾地看到没有您的jQuery / jQueryUI版本。请尝试使用当前版本的示例(将代码复制/粘贴到Web服务器上的.PHP文档中),然后再使用1.4.2 / 1.8.24版本 - 当前版本正常工作。 (您可以通过取消注释/评论头部中明显的标签来轻松切换版本)如果没有别的,也许您可​​以使用此工作示例作为起点,至少。

请注意,我没有在后端执行任何操作来接收/处理上传的文件。我不得不在某处剪切示例,因此没有编写后端处理文件。但是这里有一个链接,您可以看到一个示例:http://hayageek.com/ajax-file-upload-jquery/向下滚动到“服务器端”部分


**完全正常工作示例:只需在服务器上复制/粘贴到PHP文档**

<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />

<!--
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.8.24/themes/base/jquery-ui.css" />
-->

    <link href="//cdn.jsdelivr.net/jquery.uploadfile/2.0.7/css/uploadfile.css" rel="stylesheet">
    <script src="//cdn.jsdelivr.net/jquery.uploadfile/2.0.7/js/jquery.uploadfile.min.js"></script>


    <link rel="stylesheet" href="//getbootstrap.com/dist/css/bootstrap.min.css" />
    <script src="//getbootstrap.com/dist/js/bootstrap.js"></script>

        <style>
            *, body {font-size:12px;}
            table, th, td, tr {border-collapse:collapse;border:1px solid lightgrey;}
            th {background:lightgrey;border:1px solid grey;}
            td {height:25px;}
            th.id {width:30px;}
            th.fn {width:125px;}
            #add_file{margin-bottom:15px;}
            .fn {width:200px;height:30px;padding:5px;}
        </style>

        <script type="text/javascript">
            $(document).ready(function() {

                var cnt = 2;

                $('#tabs').tabs();
                $('#add_file').button(); //for visual appearance only
                $('#dox').click(); //auto-open the Documents tab for convenience

                //init dialog box
                $('#addbox').dialog({
                    autoOpen:false,
                    title: "Add File:"
                }); //END #addbox.dialog


                $('#add_file').click(function() {
                    //Invisibly upload your file to the server
                    var uploadObj = $("#fileuploader").uploadFile({
                        url: "name_of_php_file_that_receives_your_uploaded_doc.php",
                        method: "POST",
                        allowedTypes:"xls,doc,pdf",
                        fileName: "myfile",
                        multiple: false,
                        autoSubmit: true,
                        showStatusAfterSuccess:false,
                        onSuccess:function(files,data,xhr) {
                            upfilename = $('.ajax-file-upload-filename').html();
                            upfilename = upfilename.split(' ')[1];
                            upfilename = upfilename.split('<')[0];
                            $('#documents').find('table').append('<tr><td>00'+cnt+'</td><td>' +upfilename+ '</td></tr>');
                            $('#addbox').html('');
                            $('#addbox').dialog('destroy');

                            //Add filename and any other data to your MySQL database
                            $.ajax({
                                type:'POST',
                                url: 'your_functions_file_on_server.php',
                                data:'func_name=insert_file_into_db&upfilename=' + upfilename
                            });
                        },
                    });

                    //Open dialog box to display the Add File controls. Although appearing to come
                    //AFTER the #addbox.destroy code, this happens first. The "Upload" button that
                    //launches the entire process is actually in your jQUI #addbox dialog, which 
                    //gets opened NOW... As soon as that button is pressed, the ^above^ code runs.
                    $('#addbox').dialog('open');
                }); //END #addfile.click


            }); //END $(document).ready()

        </script>
    </head>
<body>

    <div id="tabs">
        <ul>
            <li><a href="#unit"><span>Unit Information</span></a></li>
            <li><a href="#documents" id="dox"><span>Documents</span></a></li>
            <li><a href="#x"><span>x</span></a></li>
            <li><a href="#y"><span>y</span></a></li>
        </ul>
        <div id="unit"></div>
        <div id="documents">
            <input type="button" id="add_file" value="Add File" />
            <table>
                <tr>
                    <th class="id">ID</th>
                    <th class="fn">File Name</th>
                </tr>
                <tr>
                    <td>001</td>
                    <td>myfile.doc</td>
                </tr>
            </table>
        </div>
        <div id="x"></div>
        <div id="y"></div>
    </div>
    <div id="addbox">
        <div id="fileuploader"></div>
    </div>

</body>
</html>