Jquery 按钮单击不会为我提供任何动态添加内容的数据

Jquery 按钮单击不会为我提供任何动态添加内容的数据,jquery,Jquery,嗨,我正在从数据库加载一个包含通过Gson创建的JSON数据的表。剧本是: $(document).ready(function(){ $.ajax({ url:'GetProductList', method:'post', dataType:'json', success: function(response)   { $(r

嗨,我正在从数据库加载一个包含通过Gson创建的JSON数据的表。剧本是:

$(document).ready(function(){
        $.ajax({
              url:'GetProductList',
              method:'post',
              dataType:'json',
              success: function(response)   {
                    $(response).each(function(index,element){
                        $("#producttbl").append('<tr class="data-row"><td class="td-id">'+element.id+'</td><td class="td-product">'+element.product+'</td><td class="td-   type">'+element.type+'</td><td class="td-quantity">'+element.quantity+'</td><td class="td-price">'+element.price+'</td><td class="td-date">'+element.date+'</td><td class="td-date"><input type="button" value="Buy" class="buy btn-primary" onclick="postData();">        </td>    </tr>');
              }); 
      },
      error: function(response){
              alert('Error occured Could not load Data')
      }                   
  });
});
我在
onClick
事件上调用此函数,但它什么也没有给我

请建议我如何在单击时获取行的数据。

您应该用于动态添加的元素

在文档中,您可以看到“事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on()时存在于页面上。”

由于元素是动态创建的,因此可以使用此on()签名将事件绑定到元素:

$(document).on(eventName,selector,function(){})

你的情况是:


$(文档)。在(“单击”,“输入[type=button]”,postData())

您的错误在于如何编写HTML

而不是:

onclick="postData();"
您需要使用:

onclick="postData(this);"
这样,函数postData就变成:

function postData(element) {
其中元素是生成HTML时必须使用的关键字的当前值

片段(我仅在演示中使用了不同的url和方法):

函数postData(元素){
var txtname=$(element).closest(“.data行”).find('.td product').text();
警报(txtname);
}
$(函数(){
$.ajax({
网址:'https://api.github.com/repositories',
方法:“get”,
数据类型:“json”,
成功:功能(响应){
$(响应)。每个(函数(索引、元素){
$(“#producttbl”)。追加(“”+
''+元素id+''+
“+”元素。产品“+索引”+
''+元素.类型+''+
''元素+数量''+
''元素+价格''+
''+element.date+''+
'' +
'');
});
},
错误:函数(响应){
警报('发生错误,无法加载数据')
}
});
});

而不是
onclick=“postData();”
将其放入脚本中:

$(document).on("click", "input.buy.btn-primary", postData)

在postData函数中,首先通过
console.log(this)检查
this

我只想在一个按钮上使用class=“td product”获取行的数据,单击Leve the postData(),然后简单地告诉我如何在buy button click上获取该行的文本。我看到脚本是在元素加载到dom之前加载的,所以它没有获取元素。这是真的吗?这取决于脚本的放置位置。另外,如果您将jquery放在document.ready中,那么它应该非常重要。阅读:如果我想在ajax调用后加载custom.js,我可以这样做吗?
$(document).on("click", "input.buy.btn-primary", postData)