jquery:使用超链接的值填充文本框

我在一个视图上有一些javascript,它对我的​​控制器进行ajax调用。 我正在循环数据,我正在构建一个表。 我需要做的是对表中的每个项目,使其成为超链接,然后当用户点击任何链接时,我想用文本框填充链接的值。

到目前为止,我的代码循环遍历json数据并构建我的表。 这是代码的片段:

htmlstring = htmlstring + "VlanIdName"; for(i = 0; i < returnDataFromController.length; i++) { //alert(returnDataFromController[i].VlanId); htmlstring = htmlstring + ""+returnDataFromController[i].VlanId+""+ returnDataFromController[i].Name+""; } submitFormHTML = "  "; $('#clientajaxcontainer').html(htmlstring); $('#newvlanform').html(submitFormHTML); 

为了完成我想要做的事情,我是否需要为每个标签指定一个唯一的名称,或者我可以将它分配给一个类? 如果我可以为每个标记分配某个类(例如)classX …然后为类型为classX的标记的click事件编写一个jquery处理程序,那就太好了。 这可能吗? 感谢您抽出宝贵时间阅读这篇文章。

编辑:

我使用的是jquery版本1.8。 除了上面的代码,我添加了一些javascript来尝试根据click事件自动填充文本框:

  $('clientajaxcontainer').on("click", "td:first-child a", function(ev) { ev.preventDefault(); $('#newVlanID').val($(this).text()); }); 

如果我理解正确,ev.preventDefault()应该阻止浏览器将我重定向到另一个页面。 但这似乎并没有起作用。 当我点击任何超链接时,它会重新加载当前页面。

使用.on()的委托版本,并为您的ajax容器添加一个单击处理程序。

 $("#clientajaxcontainer").on("click", "td:first-child a", function(ev) { ev.preventDefault(); $("#newVlanID").val($(this).text()); }); 

来自另一个问题的例子 ,但它真的很接近这个解决方案,只是没有链接标签:)

编辑
对于低于1.7的jQuery版本,您可以使用.delegate()代替

 $("#clientajaxcontainer").delegate("td:first-child a", "click", function(ev) { ev.preventDefault(); $("#newVlanID").val($(this).text()); }); 

我不会将链接创建为HTML字符串,而是将它们创建为jQuery元素,因此您可以为它们分配一个单击侦听器:

 var link = $(""+ yourVar +""); link.click(function(){ alert("Do something with "+ $(this).html()); return false; }); $(yourDomElement).append(link);