2009-12-31 31 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