【问题标题】:How to select table id within a div or two?如何在一两个 div 中选择表 ID?
【发布时间】:2017-07-01 21:03:30
【问题描述】:

我正在尝试选择以下表格 ID - myTable - 它嵌套在几个 div 中。

这是来自 Chrome 的元素面板的屏幕截图:

我尝试使用以下方法无济于事:

$('#myTable').tablesorter(); $('table#myTable').tablesorter();
    <html lang="en">
      <head>
        <title>Beverly Bonus Dashboard</title>
        <script type="text/javascript" src="../js/jquery/js/jquery-min.js"></script>
        <script type="text/javascript" src="../js/jquery/js/jquery-ui.js"></script>
        <script type="text/javascript" src="../js/jquery/tablesorter/jquery.tablesorter.js"></script>
        <script type="text/javascript" src="../js/central.js"></script>
        <link type="text/css" href="../js/jquery/css/tpurple/jquery-ui-1.8.21.custom.css" rel="stylesheet" />
      </head>
      <? if ($isDelegate == "true") { ?>
      <body>
        <div id="tabs">
          <ul>
            <li><a href="#tabs-1">Nunc tincidunt</a></li>
            <li><a href="#tabs-2">Proin dolor</a></li>
            <li><a href="#tabs-3">Administration</a></li>
          </ul>
          <div id="tabs-1">
            <p>Tab 1 content</p>
          </div>
          <div id="tabs-2">
            <p>Tab 2 content</p>
          </div>
          <div id="tabs-3">
            <button id="button_showUsers" value="<?=$centreID; ?>">Show Users</button>
            <button id="button_addUsers" value="<?=$centreID; ?>">Add Users</button>
            <button id="button_removeUsers">Remove Users</button>       
            <br>
            <div id="users"></div>               
          </div>
        </div>   
      </body>
      <? }//end if isDelegate 
      else {
        echo $fullName .", You do not have permission to view this page";
      }
      ?>  
    </html>

文件:central.js

<pre>
    $(document).ready(function(){
      //Tabs
      $('#tabs').tabs({ spinner: 'Retrieving data...' });
      //Buttons
      $("button").button();     
      //Dialog Box 
      $('#dialog').dialog()
      //error messages
      var $error_1 = $('<div></div>')
        .html("You Do Not Have Permission To View This Site.")
        .dialog({autoOpen: false, title: 'Error'});  
       $('#myTable.tablesorter').tablesorter();

      //site stuff
      $("#button_showUsers").click(function(){
        //get the centre id
        var ID = $(this).val();
        //echo out the delegates based on the centre ID
        $.getJSON("../php/show_delegates.php", {  centreID: ID }, function(data) { 
          $("#users").html("");
          var tbl ="<table id='myTable' class='tablesorter'><thead><tr><td>AGS</td><td>Name</td><td>Centre ID</td><td>Start Date</td><td>End Date</td></tr></thead><tbody>";
          $.each(data.delegates, function(key, val) {
            tbl = tbl 
            +"<tr>"
            +"<td>"+val.ags+"</td>"
            +"<td>"+val.full_name+"</td>"
            +"<td>"+val.centre_id+"</td>" 
            +"<td>"+val.start_date+"</td>"
            +"<td>"+val.end_date+"</td>"
            +"</tr>";
          });//end each
          tbl = tbl
          +"</tbody></table>";   
        $("#users").append(tbl);
        })//end getJSON 
      }); //button_showUsers

      $("#button_addUsers").click(function(){
        //get the centre id
        var ID = $(this).val();  
        $("#users").html("");
        var tbl ="<table id='myTable' class='tablesorter'><thead><tr><td>AGS</td><td>Name</td><td>Centre ID</td><td>Start Date</td><td>End Date</td></tr></thead><tbody>"
        +"<tr>"
        +"<td><input type=text id='ags'maxlength='8'></input></td>"
        +"<td></td>"
        +"<td></td>"
        +"<td></td>"        
        +"<td></td>"    
        +"</tr></tbody></table>";   
        $("#users").append(tbl);
      }); //button_addUsers

      //log user out when window closes
      $(window).unload( function () { 
         $.get("../php/logout.php", function(data) { }); 
         alert("Bye now!");
      });//end unload

        //log user out when window closes
      $(window).load( function () { 
        $.get("../php/user_details.php", function(data) { }); 
         //alert("Bye now!");
      });//end unload


    }); //end (document).ready

感谢任何指导。

【问题讨论】:

  • 有什么错误吗?请发布我们需要知道的所有信息以帮助调试。
  • 确保 id 相同且没有其他 id 作为myTable,将代码写入.ready 处理程序或页面末尾
  • 如果能显示一些代码就更好了!
  • 因为这里没什么可做的,我要继续问一个明显的问题......你的 jQuery 链接正确吗?否则,即使您有多个具有该 ID 的 div,您也会成功选择该 div。 (您只需全选)
  • 感谢大家的回复。我正在研究如何发布我的代码。

标签: jquery html html-table tablesorter


【解决方案1】:

它应该工作。

  1. 可能是您在加载 html 之前发起了调用 $('#myTable')。尝试在document.ready()中初始化tablesorter

  2. 您显示的 html 稍后会使用 ajax 调用加载到页面中。在这种情况下,您需要在 ajax 调用之后初始化 tablesorter。

  3. 或者你在 html 之前的某个地方得到了一个具有相同 id 的元素,因此它失败了。在控制台中尝试 $('#myTable') 并检查它是否返回正确的元素。

【讨论】:

  • 嘿 Jithin,我在控制台中尝试了 $('#myTable') 并返回以下内容:farm9.staticflickr.com/8425/7499178020_2ebc9590c4_z.jpg
  • 您正在使用选择器获得正确的表格。对吗?
  • 是的,第二点。执行 $('#myTable.tablesorter').tablesorter();在 ajax 调用不起作用之前,因为表尚未加载。您必须从那里剪切并粘贴到 $("#users").append(tbl);
  • 放置 $('#myTable.tablesorter').tablesorter();在 $("#users").append(tbl);.它应该可以工作。
【解决方案2】:

尝试使用以下方法:

$('#myTable.tablesorter').tablesorter();

$('#myTable .tablesorter').tablesorter();

【讨论】:

  • tablesorter() 是一种方法,而不是 class 选择器。
  • @undefined 根据 OP 提供的屏幕截图,它也是该表的一个类。我已经更改了我的代码以添加方法来澄清这一点。
【解决方案3】:

1) 保持 Html 不变。

2) 包括最新的 Jquery、Jquery UI 和 jquery.tablesorter.js java 脚本文件以及 Jquery UI 样式表。

3) 替换以下 Javascript / JQuery:

function appendUserTable() {
            $("#users").html("");
            var strdata = "[{'ags':25,'full_name':'User1','central_id':1,'start_date':'01-01-2001','end_date':'12-31-2005'},{'ags':20,'full_name':'User2','central_id':2,'start_date':'05-01-2002','end_date':'12-31-2007'},{'ags':22,'full_name':'User3','central_id':3,'start_date':'06-05-2003','end_date':'12-31-2010'}]";
            var tbl = "<table id='myTable' class='tablesorter'><thead><tr><th>AGS</th><th>Name</th><th>Centre ID</th><th>Start Date</th><th>End Date</th></tr></thead><tbody>";
            var dataObject = eval('(' + strdata + ')');
            for (i in dataObject) {
                tbl = tbl + "<tr>" + "<td>" + dataObject[i]["ags"] + "</td>" + "<td>" + dataObject[i]["full_name"] + "</td>" + "<td>" + dataObject[i]["central_id"] + "</td>" + "<td>" + dataObject[i]["start_date"] + "</td>" + "<td>" + dataObject[i]["end_date"] + "</td>" + "</tr>";
            }
            tbl = tbl + "</tbody></table>";
            $("#users").append(tbl);

            if ($("#users").find("#myTable").length > 0) {
                $("#myTable").tablesorter();
            }
        }

        $(document).ready(function() {
            $("#tabs").tabs();
            //if Show User Button Clicked
            $("#tabs-3 #button_showUsers").click(function() {
                //get the centre id
                // var ID = $(this).val();  
                //Append User Table Sorter
                appendUserTable();
            });
            //if Add User Button Clicked
            $("#tabs-3 #button_addUsers").click(function() {
                //get the centre id
                // var ID = $(this).val();  
                //Append User Table Sorter
                appendUserTable();
            });
            //Place other Login/Logout Script Here...
        }); //End of document ready

4) 为可排序表添加以下 CSS

table.tablesorter {
  background-color: #CDCDCD;
  font-family: arial;
  font-size: 8pt;
  margin: 10px 0 15px;
  text-align: left;
  width: 100%;
}
table.tablesorter thead tr .header {
  background-image: url("http://tablesorter.com/themes/blue/bg.gif");
  background-position: right center;
  background-repeat: no-repeat;
  cursor: pointer;
}
table.tablesorter thead tr th, table.tablesorter tfoot tr th {
  background-color: #E6EEEE;
  border: 1px solid #FFFFFF;
  font-size: 8pt;
  padding: 4px;
}
table.tablesorter {
  font-family: arial;
  font-size: 8pt;
  text-align: left;
}

也可以在代码箱上试试这个。 http://codebins.com/codes/home/4ldqpbr

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多