-3
$.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 调用数据。

4

3 回答 3

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'));
});
于 2013-09-09T17:05:39.427 回答
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='' 。有关类似情况,请参阅此帖子HTML 中是否允许使用单引号?

编辑 如果我理解正确,OP面临的实际问题是,如果调用javascript:makeajaxcall(v.uID); 失败,表的创建也失败。因此,看起来OP 实际需要的是一种优雅地继续创建表的方法,即使发生错误也是如此。

处理这个问题的最好方法是将函数的内容包装在try/catch中。如果您在 makeajaxcall 函数中执行此操作,那将是最好的。

我们真正需要查看的代码是您的 makeajaxcall 函数中的代码,因为这似乎是问题所在。

于 2013-09-09T17:05:53.487 回答
0

由于您的报价,这可能无法满足您的要求。您不会在需要时结束它们,并且 onclick 函数应该在 HTML 引号中。它应该看起来像这样。

tbl_row += "<td><a href='#' onclick='javascript:makeajaxcall(v.uID);'>Delete</a></td>";

这就是为什么在 JavaScript 和 PHP 中我总是使用单引号 (') 而在 HTML 中我总是使用双引号 (")。

于 2013-09-09T17:06:24.263 回答