Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery按给定id更新表行_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 使用jQuery按给定id更新表行

Javascript 使用jQuery按给定id更新表行,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,在成功的AJAX调用之后,我需要更新特定的表行(通过tr id=“unique_key”) HTML片段: <a name=\"p{$product_id}\" class=\"tr{$product_id}\"></a> <tr id="p{product_id}" class="item-row"> <td><h3>{product_id}</h3><a rel="facebox" href="ajax_url"&

在成功的AJAX调用之后,我需要更新特定的表行(通过tr id=“unique_key”)

HTML片段:

<a name=\"p{$product_id}\" class=\"tr{$product_id}\"></a>
<tr id="p{product_id}" class="item-row">
<td><h3>{product_id}</h3><a rel="facebox" href="ajax_url">{product_name}</a></td>
<td>{image_information}</td>
<td>{image_sortiment}</td>
<td>{product_status}</td>
</tr>
发生了什么:

  • 表行已删除
  • 锚点组合成一行(不在它们的
    之前),所以我的“钩子”消失了
  • AJAX结果插入整个表(在我的“hook”之后,但仍然是一个错误的位置)

我的想法怎么了?如何强制jQuery“覆盖”所需的表行?

表内不能有锚定,表行外不能有锚定。表中的所有内容都必须位于表单元格内。如果您将内容放在单元格之外,浏览器会尝试修复代码,以便可以显示它,通常是将其移动到表的后面

操作表中的内容可能很棘手,如果您将行添加为html块而不是行元素,则可能会出现问题。使用jQuery函数从您获得的字符串创建元素

var row = $(msg);
$('#p' + prod_id).replaceWith(row);

这个想法似乎没什么问题


尝试在
TR
中替换每个
TD
的内容,而不是删除并添加新内容

只是一个想法,试试这个

您的tr必须是单个或多个,具体的tr产品id为常量和增量值,如下所示

 <tr id="p{product_id}cnt1" class="item-row">
 <tr id="p{product_id}cnt2" class="item-row">


如果要删除,则只需将tr位置与产品id一起传递,并获取适当的值以删除并按顺序显示tr。

您不能将任何非表元素直接放在
内,但不能放在
内。浏览器无法正确呈现它

因此,您必须在另一个
中放置锚定

但如果它们仅用于删除行并创建新行,您可以尝试:

表单已过帐值分配给表tr td元素。这将使用表单已过帐的值更新行

     $( tracking112 ).html( $( '#modalTrackingNumber' ).val() );
     $( charge112 ).html( $( '#modalCharge' ).val() );

AJAX请求返回的是什么?要插入的新的
?我希望无效的html不会成为问题,但您确认:是的。谢谢你。不幸的是,我不能一步一步地浏览我桌子上的每一行,因为它太大了,我想。@fabrik:你不必一步一步地浏览所有的行。每个行元素都有一个
rowIndex
属性,您可以使用该属性知道行在表的
集合中的位置。太棒了!巧妙的!谢谢你!我查看了jQueryWiki上的每一个页面,看起来我不够警惕。再次感谢!是的,
rowIndex
(和
cellIndex
)是普通的DOM级别1 HTML属性。jQuery实际上没有任何类似的功能。这一个不够好,因为当用户更新产品的详细信息时,我可以随时更新表行。我认为你的解决方案只适用于一次更新。顺便说一句,谢谢你的评论。对不起,我先看到了Guffa的答案。顺便说一句,我会支持你的答案。谢谢
$('#p' + prod_id).replaceWith(msg);
<table>
   <tr id="1234">
       <td>ID</td>
       <td>tracking</td>
       <td>charge</td>
  </tr>
</table>
 <form>
      <input id="modalTrackingNumber" type="text">
      <input id="modalCharge" type="text">
 </form>
   var tracking112=$('tr#' + updateID + ' td' )[1];
   var charge112= $('tr#' + updateID + ' td' )[2];
     $( tracking112 ).html( $( '#modalTrackingNumber' ).val() );
     $( charge112 ).html( $( '#modalCharge' ).val() );