2012-06-07 52 views
0

我有一個標準的HTML格式表,它通過Zend Framework動態生成內容。從哪裏我有一個問題在PHP內部改變形式。所以我需要改變表的外觀。在這種情況下,我有一個元素出現在其中一行中,當這個元素出現時,我想跳出表格,然後在它後面做一些事情,然後再次啓動表格。jQuery突破錶

基本上我想包含所述一個元件I尋求在這種情況下是一個標籤的行後噴射的

</tbody></table>/*other stuff*/<table><tbody>的equivlant。

我試過$("label[for='theLable']").parents('tr').after('</tbody></table><br><table><tbody>')它似乎忽略了結束表部分添加br,然後在同一個表中爲表和tbody做一個完整的開放/關閉標記我想突破這樣inbetween tr標記基本上它添加這張新表

接近這個概念的最好方法是什麼?

更新的jsfiddle鏈接

http://jsfiddle.net/cPWDh/

+0

你可以發佈你的HTML和/或jsFiddle的例子嗎? – j08691

+0

鏈接已添加到信息 – chris

回答

2

你真的不能修改你想的方式文件的HTML,因爲它不是改變DOM一個合法的方式。

相反,我會創造你想要移動到一個新表,並.append行,將他們從當前位置(而不是複製它們)自動移動:

$(document).ready(function() { 
    var $trow = $('label[for="specialLabel"]').closest('tr'), 
     $table = $trow.closest('table'); 
    $('<table>').append($trow.nextAll().andSelf()).insertAfter($table); 
});​ 

http://jsfiddle.net/cPWDh/1/

+0

哇,這看起來不錯,我想如果我必須自己得出這個結論,我會花一天時間+做這件事。謝謝 – chris

0

這種方法在js中不起作用。如果表沒有太多行,你可以做什麼是這樣的:

var nextTable = $("table").after("/*other stuff*/<table id="nextTable"></table>"); 
//now you loop over the lines of your original table that you want to have after the "break", and move them to the nextTable: 

var before = true; 
$("table tr").each(function(){ 
    if ($(this).has("[for='theLable']")) { 
     before = false; 
    } 
    if (!before) { 
     nextTable.append($(this)); 
    } 
});