2013-12-11 65 views
5

这是我第一次使用list.js,由于某种原因它不工作。使用list.js排序和搜索不工作

这是一个现场示例。 http://hartslogmuseum.com/bookhjr10/test.php 这里是它应该做的 http://listjs.com/examples

这里是我的代码。我只想搜索名称。

<div class="table-responsive"> 
<div id="catalog"> 
<input class="search" placeholder="Search" /> 
    <button class="sort" data-sort="name"> 
    Sort Name 
    </button> 
    <button class="sort" data-sort="cat"> 
    Sort Category 
    </button> 
<h2> Catalog </h2> 
<table class="list table-bordered table-striped"> 
<tr> 
<td> <h2 class="name">Item Name</h2> </td> 
<td><h2 class="cat">Item Category</h2></td> 
<td> <h2>Thumbnail</h2></td> 
<td> <h2 class="descr">Item Desc</h2> </td> 
<td> <h2 class="time">Time Frame</h2> </td> 
<td> <h2 class="donor">Donor</h2> </td> 


</tr> 
$resultSet = mysqli_query($conn,"SELECT * FROM bookhjr10_items"); 

While($row = mysqli_fetch_array($resultSet)) 
{ 
$i=0; 
echo "<tr>"; 
echo "<td class=\"name\">".$row['name']. "</td>"; 
echo "<td class=\"cat\">".$row['category']. "</td>"; 
echo "<td><a href=\"fullimage.php?id=".$row['id']."\" data-lightbox=\pic\"><img src=\"image.php?id=".$row['id']."\" alt=\"thumb-1\" /></a></td>"; 
echo "<td class=\"descr\">". $row['descr'] . "</td>"; 
echo "<td class=\"time\">". $row['time'] . "</td>"; 
echo "<td class=\"donor\">". $row['donor'] . "</td>"; 
echo "</tr>"; 
$i++; 
} 

?> 
</table> 
</div> 
     </div> 
     <script type="text/javascript"> 
var options = { 
    valueNames: [ 'name' ] 
}; 

var hackerList = new List('catalog', options); 
</script> 
+1

你做了什么对问题进行调试?你在控制台中有任何错误吗? *编辑:*如果你看看控制台,你会遇到一堆错误:'无法加载资源:服务器响应状态为404(Not Found)'。某些脚本(例如jQuery)未找到。 –

+0

我试过改变类名。我没有收到任何错误。当我在搜索框中输入时,一切都会消失。这就是它应该做的,只显示你键入的内容,但由于某种原因,它不能像那样工作。 是的,这些都是我不需要的东西。我带走了他们。 – Pureblood

+0

我需要的是http://listjs.com/overview/download list.ls正确吗?我不需要做其他事情? – Pureblood

回答

1

当使用表list.js你应该添加class="list"<tbody>标签,而不是<table>标签。

因此,在你的代码改变这一部分:

<table class="list table-bordered table-striped"> 
<tr> 

<table class="table-bordered table-striped"> 
<tbody class="list"> 
<tr> 

而且不要忘记加上</tbody>

-1
***Add php tag before you start php code in an html content.*** 
//You can refer to below example: 
<div class="table-responsive"> 
<div id="catalog"> 
<input class="search" placeholder="Search" /> 
    <button class="sort" data-sort="name"> 
    Sort Name 
    </button> 
    <button class="sort" data-sort="cat"> 
    Sort Category 
    </button> 
<h2> Catalog </h2> 
<table class="list table-bordered table-striped"> 
<tr> 
<td> <h2 class="name">Name</h2> </td> 
</tr> 
<?php 
$sql="SELECT * FROM country"; 
$resultSet = mysql_query($sql,$conn); 
while($row = mysql_fetch_array($resultSet)) 
{?> 
<tbody > 
<tr><td class="name"> 
<?php 
$i=0; 
echo $row['cn_name']; 
$i++; 
}?> 
</td></tr> 
</tbody> 
</table> 
</div> 
     </div> 
//Javascript 
<script src="http://listjs.com/no-cdn/list.js"></script> 

     <script type="text/javascript"> 
var options = { 
    valueNames: [ 'name' ]//you can specify more columns by adding , 
}; 

var hackerList = new List('catalog', options); 
</script> 
14

您可能已经忘记了最低要求之一。

这些似乎最低要求:调用list.js

    1. 指示表的父元素ID表的tbody必须有一流的list
    2. 如果表已有项目(大多数情况下,我假设),选项的valueNames参数是强制性的。这些值是您想要排序的列的类名称(每个td中定义的类名称,而不是th - 虽然您也可以将它添加到th)。
    3. 用于排序必须有一个类名称的表头sort
    4. 用于排序必须具有相匹配的列的类名的名称的值的属性data-sort的表头进行排序

    以下是使用表几个list.js codepen例子(这是从http://listjs.com/examples/add-get-remove):

    最少的代码示例:

    也看到http://jsfiddle.net/d7fJs/

    <!-- for a table with a parent div of id "my-cool-sortable-table-wrapper", --> 
    <!-- and columns of class names "gender", "age" & "city" --> 
    
    <div id="my-cool-sortable-table-wrapper"> 
        <table> 
         <thead> 
          <th class="sort" data-sort="gender">Gender</th> 
          <th class="sort" data-sort="age">Age</th> 
          <th class="sort" data-sort="city">City</th> 
         </thead> 
         <tbody class="list"> 
          <tr> 
           <td class="gender">male</td> 
           <td class="age">18</td> 
           <td class="city">Berlin</td> 
          </tr> 
          <tr> 
           <td class="gender">female</td> 
           <td class="age">46</td> 
           <td class="city">Reykjavik</td> 
          </tr> 
          <tr> 
           <td class="gender">female</td> 
           <td class="age">20</td> 
           <td class="city">Lisboa</td> 
          </tr> 
          <!-- and so on ...--> 
         </tbody> 
        </table> 
    </div> 
    
    <script src="//cdnjs.cloudflare.com/ajax/libs/list.js/1.1.1/list.min.js"></script> 
    <script type="text/javascript"> 
        var options = { 
         valueNames: [ 'gender', 'age', 'city' ] 
        }; 
        var contactList = new List('my-cool-sortable-table-wrapper', options); 
    </script> 
    

    注:如果排序行为异常 - 即。排序不正确 - 这可能是因为您缺少一项基本要求。如果你挣扎,做一个jsfiddle &问与你的问题在一个链接到它的计算器。


    如果你想避免缠绕元件使用该ID,而是使用自定义选择,您可以更换:

    var contactList = new List('my-cool-sortable-table-wrapper', options); 
    

    通过这样的:

    var wrapperElement = $('.my .custom .selector'); 
    var contactList = new List(wrapperElement[0], options); 
    

    见:


    如果要检测由List.js &做相应处理(在这里我们更新相应的列级名)触发更改事件

    contactList.on("updated", function(){ 
        $('#my-cool-sortable-table-wrapper tr').removeClass('odd').filter(':visible:odd').addClass("odd"); 
    }) 
    

    List.js处理不同事件类型。查看完整列表中this page http://listjs.com/docs/list-api


    正式文件的底部http://listjs.com/docs/options

  • +3

    对于搜索/过滤,另一个(似乎没有记录的)要求似乎是在调用List构造函数时(以及具有“search”类)搜索必须位于指定的div中。我意识到OP只是在询问排序问题,但是你的答案更适合于使用List.js进行定向,而不是官方文档,所以我想在此为其他人做一个说明。 –