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