2010-11-11 92 views
0

我有一個函數可以將原始HTML輸出到表格,但是我想取出前三列並將它們放在另一個div中。使包含表格的一個div分爲兩個div,其中包含表格

我正在考慮在隱藏的頁面上創建一個div,將此div的html設置爲我得到的原始HTML,然後使用選擇器語法將它剝離到每個表格的div中。有沒有辦法做到這一點,沒有中間的人造div保存原始的HTML?

回答

0

我不知道究竟爲什麼你要做到這一點,而不是安排你的服務器端數據,但一個辦法,工作原理是:

$(document).ready(
    function(){ 
     $('table').click(
      function(){ 
       $('<table />').appendTo('#newTable').addClass('new'); 
       $('table').eq(0).find('tr td:first-child').each(
        function(){ 
         $(this).appendTo('.new').wrap('<tr></tr>'); 
        }); 
      }); 
    }); 

隨着(X)HTML:

<table> 
    <tr> 
     <td>1:1</td> 
     <td>1:2</td> 
     <td>1:3</td> 
    </tr> 
    <tr> 
     <td>2:1</td> 
     <td>2:2</td> 
     <td>2:3</td> 
    </tr> 
    <tr> 
     <td>3:1</td> 
     <td>3:2</td> 
     <td>3:3</td> 
    </tr> 
    <tr> 
     <td>4:1</td> 
     <td>4:2</td> 
     <td>4:3</td> 
    </tr> 
</table> 
<div id="newTable"></div> 

JS Fiddle demo

的演示使用jQuery's click()事件,但是這只是爲了顯示它交互工作;它當然可以直接放入DOM-ready/$(document).ready(function(){/* ... */});事件中。


上面的代碼將允許重複點擊(每次移動第一「列」到一個新的表),則編輯刪除了可能性使用jQuery's one(),得到以下的jQuery:

$(document).ready(
    function(){ 
     $('table').one('click', 
      function(){ 
       $('<table />').appendTo('#newTable').addClass('new'); 
       $('table').eq(0).find('tr td:first-child').each(
        function(){ 
         $(this).appendTo('.new').wrap('<tr></tr>'); 
        }); 
      }); 
    }); 

JS Fiddle demo, featuring one()

+0

非常酷。我試圖設置固定列,並希望將表格拆分爲兩個div。我的理解是,appendTo會將整個表複製到#newTable標識的div中,是正確的嗎? – sova 2010-11-11 17:25:36

+0

在這種情況下,它將分割出每行的第一個單元格,並將它們追加到'.new()'表中,並將它們中的每一個都封裝在一個'tr'中。所以不,我不認爲你的假設是正確的,除非我誤解。嘗試JS小提琴演示之一,看看它是否適合你。 – 2010-11-11 17:34:28

+0

啊,一個優秀的演示!我認爲我的誤解從$('

')和$('table')不同 - 第一個創建了一個新的
元素,您將其添加到div,第二個選擇頁面上的所有表格元素。是對的嗎? – sova 2010-11-11 17:40:45

1

這一切都取決於「獲取原始HTML的功能」。它在哪裏獲得HTML?如果它的格式不是呈現的節點,那麼在呈現它之前,您應該能夠根據需要對其進行操作。如果你使用字符串格式(並且標記是有效的),jQuery真的很擅長將字符串轉換爲可遍歷的對象。例如:

var xml = '<div><span>hello</span></div>'; 
console.log($(xml).find('span')); 

在FireBug中,它將跨度顯示爲對象節點。

+0

這是一個很好的觀點,當我通過ajax獲取html時,我可以做一些冗餘的格式化操作!是的,這是一個有效標記的字符串,但我不知道你可以像DOM對象那樣遍歷它們,那真棒。 – sova 2010-11-11 17:27:46