我可以使用Jquery在动态表中插入结束标记和开放标记吗?
我正在尝试使用下面的代码动态添加结束标记,然后打开,以便我每三个单元格创建一个新行。 几乎工作,DOM检查器显示一个TR节点,问题是,发生的事情tr没有关闭tr标签。 我是Jquery的新手,这个代码有什么问题吗?
$(document).ready(function(){ $('td:nth-child(3n)').after(''); }); <?php function somelongassfunction(){ return 'Hello'; } function have_products($a){ return $a<=20; } $x=0; while (have_products($x)) { echo '' . somelongassfunction() . ' '; $x++; //------------------------------------- /*if (fmod($x,3) == 0) { echo ' '; continue; }*/ //-------------------------------------- if ($x==20){ break; } } ?>
您不能像选择HTML文档一样处理DOM选择。 DOM文档是节点的层次结构,而不是标签的层次结构。 HTML中的标记由浏览器解析为DOM文档。 然后,您不能添加一点HTML,然后期望将其解析回DOM结构。
相反,你需要在jQuery中进行包装。 这是一种可行的方法 – 它可能不是最有效的方法。
$('td').each(function(idx) { if (idx % 3) { return; } else { $(this).nextAll(':lt(2)').andSelf().wrapAll(' '); } }).parent().unwrap();
的jsfiddle
另一种方法是detach
所有td
元素,然后使用splice
将它们分成3组:
var td = $('tr td').detach(); $('tr').remove(); while(td.length>0){ $(td.splice(0,3)).wrapAll(' ').parent().appendTo('tbody'); }
示例: http : //jsfiddle.net/niklasvh/C6unV/
正如lonesomeday所说,你不能像对待一些HTML那样对待DOM。 此外, TR结束标记是可选的,因此当您使用开放TR插入一些标记时,浏览器将关闭它。 您不需要结束标记。