2013-12-11 16 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

あなたが問題をデバッグするために何をしたthis page http://listjs.com/docs/list-api


公式ドキュメントの下部にある一覧を見ますか?コンソールに何かエラーがありますか? *編集:*コンソールを見ると、 'リソースの読み込みに失敗しました:サーバが404(Not Found)のステータスで応答しました。一部のスクリプト(例:jQuery)が見つかりません。 –

+0

クラス名を変更しようとしました。私は何の誤りもありません。私が検索ボックスに入力すると、すべてが消えます。それは何をすべきか、あなたが入力したものだけを示していますが、何らかの理由でそのようには機能しません。 それは私が必要としなかったものでした。私はそれらを取り出した。 – Pureblood

+0

私は必要なのはhttp://listjs.com/overview/download list.lsですか?私は他の何かをする必要はない? – Pureblood

答えて

1

あなたの代わりに<table>タグの<tbody>タグにclass="list"を追加する必要があり、テーブルとlist.jsを使用。あなたのコードの変更でそう

この部分:

<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

おそらく最小要件の1つを忘れています。

  1. list.js
  2. を呼び出すときにテーブルが既に私は希望のアイテム(ほとんどの場合がある場合は、テーブルのtbodyは、クラスlist
  3. を持っている必要があり、テーブルの親要素のIDを示します。

    これらは、最小限の要件は思えます仮定)、オプションのvalueNamesパラメーターは必須です。これらの値はソートする列のクラス名です(ではなく、tdで定義されているクラス名ですが、thに追加することもできます)。

  4. ソートに使用されるテーブルのヘッダは名前 sort
  5. のクラスを持っている必要があります
  6. ソートするために使用されるテーブルのヘッダは

をソートする列のクラス名の名前と一致する値を持つ属性data-sortを持っている必要があります

最小限のコード例:ソートが妙に動作している場合 - すなわち:

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> 

ノートにも参照してください。並べ替えが間違っている - 基本的な要件の1つが欠落している可能性があります。あなたが苦労している場合、jsfiddle &は、それへのリンクとstackoverflowであなたの質問をしてください。


あなたがラップ要素で、このIDを使用して回避し、代わりにカスタムセレクタを使用する場合は、置き換えることができます。

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

参照:これにより

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

を:


あなたはList.js &によってトリガ変更イベントを検出したい場合はそれに応じて行動する(ここでは、我々はそれに応じて行クラス名を更新)

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

List.jsは異なるイベントタイプを処理します。 http://listjs.com/docs/options

+3

検索/フィルタリングのために、Listコンストラクタを呼び出すとき(および "検索"クラスを持つとき)に、の検索が指定されている必要があるというように、他の(一見文書化されていない)要件があるようです。私はOPの並べ替えを尋ねていただけですが、あなたの答えはより一般的に適用可能であり、公式の文書よりもList.jsの方が向いていますので、他の人にはここでメモしておきたいと思います。 –

関連する問題