2009-12-31 54 views
1

我使用Jquery的分页插件
一种解决方法来解决一个IE错误相对于所述clone()方法在jquery的1.3.2

http://plugins.jquery.com/project/pagination

进行分页在一个表中的行。

我也使用他人提供的一个小秘密SO质疑 here纠正最初的例子中的错误...

的代码工作正常在Firefox和Chrome,但不是在IE6 + ...这里是我的JavaScript来初始化和运行分页...

function pageselectCallback(page_index, jq){ 
       var items_per_page = pagination_options.items_per_page; 
       var offset = page_index * items_per_page; 
       var new_content = $('#hiddenresult tr.result').slice(offset, offset + items_per_page).clone(); 



       $('#Searchresult').empty().append(new_content); 


       return false; 
      } 

      var pagination_options = { 
        num_edge_entries: 2, 
        num_display_entries: 8, 
        callback: pageselectCallback, 
        items_per_page:3 
       } 



      /** 
      * Callback function for the AJAX content loader. 
      */ 
      function initPagination() { 
       var num_entries = $('#hiddenresult tr.result').length; 
       // Create pagination element 

       $("#Pagination").pagination(num_entries, pagination_options); 
      } 

      // Load HTML snippet with AJAX and insert it into the Hiddenresult element 
      // When the HTML has loaded, call initPagination to paginate the elements 
      $(document).ready(function(){ 
       initPagination(); 
      }); 

表结构是

// Table to display the paginated data 
<table> 
    <tr> 
    <td> 
     <div id="Pagination" class="pagination"> 
     </div> 
     <br style="clear:both;" /> 
     <div id="Searchresult" style="height:auto;"> 
     This content will be replaced when pagination inits. 
    </div> 
    </td> 
</tr> 
</table> 


// Table containing the rows that are to be paginated 
<table id="hiddenresult" style="display:none;"> 
    <tr> 
    <td> 

<table> 
     <tr> // 1st row 
     <td> 
      <table> 
       <tr> 
        <td> 
        </td> 
       </tr> 
       <tr> 
        <td> 
        </td> 
       </tr> 
      </table> 

      <table> 
       <thead> 
        <tr> 
        </tr> etc... 
       </thead> 
       <tbody> 
        <tr> 

        </tr> etc etc... 
       </tbody> 
      </table> 
     </td> 
     </tr> // end 1st row 

    <tr> //2nd row 
     <td> 
      <table> 
       <tr> 
        <td> 
        </td> 
       </tr> 
       <tr> 
        <td> 
        </td> 
       </tr> 
      </table> 

      <table> 
       <thead> 
        <tr> 
        </tr> etc... 
       </thead> 
       <tbody> 
        <tr> 

        </tr> etc etc... 
       </tbody> 
      </table> 
     </td> 
     </tr> //end 2nd row 

    etc etc etc.... 
    </table> 

</td> 
</tr> 
</table> // id = "hiddenresult" 

我看到它的方式插件获取的初始化在IE浏览器,但错误是在显示分页行...但不知道它在哪里或如何纠正它... 非常感谢您的建议....

+0

还有其他可用分页插件。考虑尝试一种不同的方法。 – 2009-12-31 04:56:13

+0

任何好建议......? – SpikETidE 2009-12-31 04:59:24

+1

这里有一个,但我没有尝试过:http://projects.allmarkedup.com/jquery_quick_paginate/index.php – 2009-12-31 05:10:39

回答

0

固定它... !!!

这是代码.... !!

function pageselectCallback(page_index, jq){ 
       var items_per_page = pagination_options.items_per_page; 
       var offset = page_index * items_per_page; 
       var new_content = $('#hiddenresult tr.result').slice(offset, offset + items_per_page).clone(); 


       if(navigator.appName == "Microsoft Internet Explorer"){ 
        // This is to fix an IE bug that won't properly append the cloned html to the 
        // Searchresult div. So we first append the cloned html to a dummy div and 
        // then use javascript innerhtml property to copy to the actual div. 
        $('#justDiv').empty().append(new_content); 

        var content = document.getElementById("justDiv").innerHTML; 

        document.getElementById("Searchresult").innerHTML = content; 
       } 
       else{ 
        $('#Searchresult').empty().append(new_content); 
       } 


       return false; 
      } 

干杯大家...!

我知道这是不是很整齐......我仍然开放的建议...所以..欢迎各界人士...感谢

0

仍然失去了头发打架这个愚蠢的IE错误....我发现了另一件事....如果它是帮助完全给任何人..以防万一....

如上面的代码中所示,我使用slice()jquery方法并克隆它,将其保存到变量“new_content”,然后将其附加到Searchresult div中,并且切片内容未显示...但查看“页面源”,我可以看到正确的html代码....并且它的内容不会显示在屏幕上....

然后..而不是存储的切片内容为“NEW_CONTENT”我把一些HTML代码,就像...

var new_content = "<table border=1> <tr> <td> hi </td> </tr> <tr> <td> hello </td> </tr> <tr> <td> <img src=\"../uploads/sunset.jpg\" /> </td> </tr> </table>"; 

,瞧......它得到的正确附加信息搜索结果的div ....和HTML得到的渲染正确,我可以看到屏幕上的表格和图像...

这使我猜测clone()方法返回的内容不能由IE呈现..如果是这种情况...什么可以解决这个完美的无能IE'...... ?????

+0

我的猜测是正确的...... IE确实无法与整片,克隆和追加过程相处.. !!任何人都可以想出另一种方法来做同样的事情吗? – SpikETidE 2010-02-12 12:25:13

0

优美的降解是解决方案。 不要在IE中对表格进行分页,使其只读。

+0

希望解决方案那么简单.. :) ..但必须让它在IE中工作...... !!! – SpikETidE 2010-02-12 10:32:55

+0

如果表中有许多行,您可以创建备用服务器端分页。对于IE浏览器,JS关闭的任何浏览器(noscript标签)以及旧移动设备(无WebKit或其他现代浏览器引擎)。 – myfreeweb 2010-02-12 11:03:43

+0

服务器端分页...你能为这个表结构提供一种方法....? – SpikETidE 2010-02-12 11:14:20