0

Zend Framework を介してコンテンツを動的に生成する標準の HTML 形式のテーブルがあります。そこから、PHP側でフォームを内部的に変更するという問題があります。したがって、テーブルの外観を何らかの方法で変更する必要があります。その際、行の1つに要素が表示され、この要素が表示されたら、テーブルから抜け出し、その後何かをしてから、テーブルを再度開始します。

基本的に私は同等のものを注入したい

</tbody></table>/*other stuff*/<table><tbody> after the row containing the one element I seek which in this case is a label.

I tried $("label[for='theLable']").parents('tr').after('</tbody></table><br><table><tbody>') which appears to ignore the ending table parts add the br, and then does a complete open/close tag for table and tbody within the same table I am trying to break out of so inbetween tr tags basically it adds this new table

Whats the best way to approach this concept?

update with jsfiddle link

http://jsfiddle.net/cPWDh/

4

2 に答える 2

2

DOMを変更する正当な方法ではないため、ドキュメントのHTMLを自分が考えている方法で実際に変更することはできません。

代わりに、新しいテーブルとそのテーブル.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/

于 2012-06-07T19:13:57.453 に答える
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));
   }
});
于 2012-06-07T19:14:03.860 に答える