我有一个动态创建的表,在上一个<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
});
为什么所有链接都会触发?
感谢!!!
答案 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()而不是直接按名称绑定方法,并使用事件数据猜测哪个元素触发了事件。