jquery 在现有表下追加表并链接到该行记录的 id

Posted

技术标签:

【中文标题】jquery 在现有表下追加表并链接到该行记录的 id【英文标题】:jquery append table under existing table and link to id of that rowrecord 【发布时间】:2021-04-06 09:37:16 【问题描述】:

我正在尝试获取一个包含一些结果的表,并将其附加到 AJAX Jquery 提供的按钮单击上的另一个表行。 目前的功能代码是:

function options(id)
  jQuery.ajax(
    type: 'post',
    url: my_ajax.ajax_url,
    data: 
      action: 'options_function',
      cid : id
    ,      
    success: function (data) 
    var parentEl = jQuery('#list-table').parent();
    jQuery('#list-table').append('#ideal_option').html(data).show();.show();
    
  );   

#list-table 有许多行,每行都有一个按钮,然后单击时触发选项功能。

该功能成功时,我想附加附加表结果#ideal_option。我想确保 #ideal-option 被附加到我单击按钮所在的行,而不是 #list-table 表的末尾。

上面用新表替换了初始表,而不是附加它。它也没有与它应该与之配对的行。

我该如何改变它并使它正确?

带有 HTML 的完整表格代码强文本****

echo "<table id ='ideal_option'>";  

foreach($check_availability as $available) 
    $id=$available->id;
    $foh_nmbr=$available->FOH_Number;
    $tl_type=$available->Type;
    $sf_name=$available->Staff_First_Name;
    $sl_name=$available->Staff_Last_Name;
    echo '<tr>';
    echo '<td>' . $foh_nmbr . '</td>';
    echo '<td>' . $tl_type . '</td>';
    echo("<td><select>");
foreach($Staff_On_Duty as $person)         
    $sf_name_option=$person->Staff_First_Name; 
    $sl_name_option=$person->Staff_Last_Name;
    echo("<option value = $sf_name_option&nbsp;$sl_name_option");
    if (($sf_name_option == $sf_name) && ($sl_name_option == $sl_name)) echo (" selected");
    echo(">$sf_name_option&nbsp;$sl_name_option</option>"); 

echo("</select></td>");
    
    echo '<td>' . "<button id='party' class='button ' onclick='party($id, $cid)'><i class='icon fas fa-globe'></i></button>" . '</td>'; 
echo '</tr>';
echo '</table>';

初始表格的 HTML

<table width='100%' border='0' style='display:inline-table' id='list-header' class='list-table-header'>     <th>Name</th>           <th>Email Address</th>      <th>Time Stamp</th>     <th>Status</th>     <th>Wait</th>       <th>Action</th> <th>Notify</th>     <tbody id='list-table'>     </tbody>

【问题讨论】:

我怀疑里面有一些非唯一的ID...你能发布HTML吗? 添加到初始帖子 【参考方案1】:

第一部分,ideal_option 似乎没有在标记中的任何地方指定,所以我猜它在其他地方并且默认隐藏。在这种情况下,您的链接可能是错误的。

jQuery('#list-table').append('#ideal_option').html(data).show();

应该是

jQuery('#list-table').append( jQuery('#ideal_option').html(data) ).show();

第二部分,针对您点击的行,您需要处理点击事件以及要发送的数据。我建议使用 jQuery 的绑定来处理这个问题,而不是使用原始的 onclick,通过数据属性传递参数:

jQuery(document).on('click','button.button',function party(e)
  var t = e.currentTarget; // this represents the button
  var id = jQuery(t).data('id'); // get data from the button
  var cid = jQuery(t).data('cid');
  jQuery(t).closest('td').append('You clicked here with id '+ id +' and cid '+ cid);
  options(id, cid, t); // we could pass in the target or the event here
);

我很可能误解了您的 JS 函数中的关系,但是 Here's a jsFiddle 的近似值是 (1) 将数据附加到表的 end,以及 (2) 定位单击按钮的 &lt;td&gt;

【讨论】:

您好,非常感谢。所以为了保持故障排除的做法,我刚刚移动了 jQuery('#list-table').append( jQuery('#ideal_option').html(data) ).show(); 的第一部分但它没有做任何事情,我不知道为什么。我对照这个例子检查了几次,实际上复制并粘贴了它。什么都没有。以前我可以让它附加,但它会替换数据。 Ideal_option 是 HTML 代码中的表格。取决于你打开它的时间,大约一个小时前,当我意识到我之前没有这样做时,我将它添加到帖子中 好的,所以我现在可以通过实际数据了。我使用了更简单的东西——jQuery('tbody#list-table').append(data);。出于某种原因,我无法让第一个示例工作,但我很感激。但是,在使用您的第二个示例时,我也无法使其正常工作。我在 CID 和 Id 上遇到不明错误,顺便说一句

以上是关于jquery 在现有表下追加表并链接到该行记录的 id的主要内容,如果未能解决你的问题,请参考以下文章

jquery 动态增加删除行

如何在具有现有记录的 json 数据表顶部添加新行

JQuery 追加 AJAX

组合连接表后,然后在其他表中保存/追加

jQuery 获取部分 url 并将其应用到现有链接的末尾

将数据从现有视图加载到 Snowflake 中的表并安排它每天运行 - 增量