$.each(obj.query, function(k,v) {
var tbl_row = "";
$.each(this, function(k , v) {
tbl_row += "<td>"+v+"</td>";
})
tbl_row += "<td><a href='#' onclick='"+javascript:makeajaxcall(v.uID);+"'>Delete</a></td>";
tbl_body += "<tr>"+tbl_row+"</tr>";
})
$("#201").html(tbl_body);
我需要添加指向标签的链接并调用javascript函数,如果我只是添加<a>
标记,它会起作用,但是当我添加href=""
和onclick=""
时,它不会工作。这是在动态表格中打印的AJAX调用数据。
答案 0 :(得分:0)
最好的方法是使用jquery的“on”事件监听器,它允许绑定事件监听器动态添加html元素。以下是我的建议:
首先改变:
tbl_row += "<td><a href="#" onclick='"+javascript:makeajaxcall(v.uID);+"'>Delete</a></td>";
以强>
tbl_row += '<td><a href="#" id="makeajaxCallTirggerId" data-ajaxParam=' + v.uID + '>Delete</a></td>';
然后在您的java脚本中执行以下操作;
$(document).on('click', '#makeajaxCallTirggerId', function(e){
makeajaxcall($(this).attr('data-ajaxParam'));
});
答案 1 :(得分:0)
冒着为你工作的风险......
变化
tbl_row += "<td><a href="#" onclick='"+javascript:makeajaxcall(v.uID);+"'>Delete</a></td>";
到
tbl_row += "<td><a href='#' onclick='"+javascript:makeajaxcall(v.uID);+"'>Delete</a></td>";
...注意语法高亮的区别,这就给出了答案......
问题在于您尝试将href =“”和onclick =“”添加到由“”包围的字符串中。您需要添加href =''和onclick =''。请参阅此帖子了解类似情况Are single quotes allowed in HTML?
修改强> 如果我理解正确,OP面临的实际问题是,如果对 javascript:makeajaxcall(v.uID); 的调用失败,则表的创建也会失败。 那么,即使出现错误, OP 实际需要的是一种优雅地继续创建表的方法。
解决这个问题的最佳方法是将函数的内容包装在 try / catch 中。如果你在makeajaxcall函数中这样做,那就最好了。
我们真正需要看到的代码是makeajaxcall函数中的代码,因为这似乎是问题所在。
答案 2 :(得分:0)
由于您的报价,这可能无法满足您的需求。你不想在结束时结束它们,onclick函数应该是HTML引号。看起来应该是这样的。
tbl_row += "<td><a href='#' onclick='javascript:makeajaxcall(v.uID);'>Delete</a></td>";
这就是为什么在JavaScript和PHP中我总是使用单引号(')而在HTML中我总是使用双引号(“)。