jquery(ajax)中的JS变量附加html标签

Posted

技术标签:

【中文标题】jquery(ajax)中的JS变量附加html标签【英文标题】:JS variable in jquery(ajax) appending html tag 【发布时间】:2021-05-14 18:10:37 【问题描述】:

编辑(完成):我想通了。语法是<button onclick="editItem('+data[i].id+')">EDIT</button>'

我有这个,它会生成数据库中的所有对象,显示 idnameactions - 两个按钮都有不同的 onclick function,我想在其中发送 object id 以备将来使用。

我只需要一个答案如何将data[i].id 放入'<button onclick="editItem(ID)">EDIT</button>',哪种语法?

$.ajax(
    
        type:'GET',
        url:'api',
        dataType: 'json',
        success: function(data)
            console.log(data);

            for (var i=0; i<data.length; i++) 

                var row = $(

                    '<tr>' +

                    '<td>' +
                        data[i].id +
                    '</td>' +

                    '<td>' +
                        data[i].name +
                    '</td>' +

                    '<td>' +
                    '   <button onclick="editItem(ID)">EDIT</button>' +
                    '   <button onclick="deleteItem(ID)">DELETE</button>' +
                    '</td>' +

                    '</tr>'

                );
                $('#my_table').append(row);
            
        
    
);

【问题讨论】:

尝试使用模板文字? &lt;button onclick="editItem($data[i].id)"&gt;EDIT&lt;/button&gt; @danu 不工作 【参考方案1】:

我更倾向于将 ID 添加到按钮中为 data-attributes 并使用 delegated event handler 来处理点击

// Set up event handlers on your table to listen for button clicks
const table = $("#my_table")
  .on("click", "button[data-edit]", function(e)  // EDIT button
    const id = this.dataset.edit

    // and so on, eg...
    editItem(id)
  )
  .on("click", "button[data-delete]", function(e)  // DELETE button
    const id = this.dataset.delete

    // and so on, eg... 
    deleteItem(id)
  )
  
// Using jQuery's DOM helpers makes for more concise code IMO
$.getJSON("api")
  .done(data => table.append(data.map(( id, name ) =>
    $("<tr>").append([
      $("<td>",  text: id ),
      $("<td>",  text: name ),
      $("<td>").append([
        $("<button>",  text: "EDIT", "data-edit": id ),
        $("<button>",  text: "DELETE", "data-delete": id )
      ])
    ])
  )))

【讨论】:

感谢您的回答,仍然......我没有太多经验来实现这个。 @sam00vun0c 对不起,我不明白你的问题

以上是关于jquery(ajax)中的JS变量附加html标签的主要内容,如果未能解决你的问题,请参考以下文章

Jquery用换行符附加文本数据

Jquery-AJAX进阶

使用 JQuery ajax 在 DOM 操作后附加事件

测开之路一百五十二:基于jquery的ajax实现(loadgetajax)

当 Ajax 响应来自使用 select2 的 laravel 控制器时,如何检查 JQuery 附加选项中的条件?

jquery中的多个ajax调用