如何在jquery中添加锚到标记

时间:2013-09-09 16:59:07

标签: jquery ajax

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

3 个答案:

答案 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中我总是使用双引号(“)。