jQuery为链接问题添加一个函数

时间:2010-03-15 16:30:53

标签: jquery

我有一个动态创建的表,在上一个<td>中有一个隐藏的<div>,当用户将鼠标悬停在<td>的链接上时会显示该表。这一切都运行良好,但div中有几个链接,我想基于从父行的<td>中捕获的字符串连接的链接的id来触发函数。我可以从id和<td>捕获我需要的变量,但是我创建的click函数有问题。

我在FireBug中监视了该函数,该函数似乎在所有链接上触发,而不是在单击的链接上触发。这是我的工作代码:

function fixLink() {
           $('a.batchMatchLink').click(
             function() {
                 var r = $(this).parent().parent().parent().parent().parent();
                 var x = $(this).attr("id");
                 var a = $(r).find('td:nth-child(6)').text();
                 var st = x + "." + a;
                 fireLink(st);
             }
            );
       }

       function fireLink(st) {
           $.ajax({
               type: "POST",
               url: "AjaxWcf.svc/MatchBatch",
               contentType: "application/json; charset=utf-8",
               data: st,
               dataType: "json",
               success: function(msg) {
                   alert("Entry has been updated");
                   },
               error: AjaxFailed

           });

为什么所有链接都会触发?

感谢!!!

2 个答案:

答案 0 :(得分:1)

也许你只需要取消点击事件:

function(evt) {
    evt.preventDefault();
    var r = $(this).parent().parent().parent().parent().parent();
    var x = $(this).attr("id");
    var a = $(r).find('td:nth-child(6)').text();
    var st = x + "." + a;
    fireLink(st);
}

答案 1 :(得分:1)

我认为你应该使用live()或bind()而不是直接按名称绑定方法,并使用事件数据猜测哪个元素触发了事件。

http://api.jquery.com/bind/#passing-event-data