如何在一个锚标记的href中声明的函数中获取$(this)

时间:2013-07-08 19:44:29

标签: ajax jquery

我的表格中的td中有以下锚标记:

<a  href="javascript:editAccount()" class="edit">edit</a>

我想在editAccount()函数中找到此td的父级,执行以下操作:

function editAccount(){ console.log($(this).parent().parent()); }

但是,我在控制台中一直变为空

3 个答案:

答案 0 :(得分:5)

您需要传递问题

的元素
<a  onclick="editAccount(this)" class="edit">edit</a>

function editAccount(elem){ console.log($(elem).parent().parent()); }

或使用 function.call

<a  onclick="editAccount.call(this)" class="edit">edit</a>

function editAccount(){ console.log($(this).parent().parent()); }

使用Jquery绑定事件。

<a class="edit" href="#">edit</a>

$(function(){
    $('.edit').click(function(e){
       e.preventDefault();
       console.log($(this).parent().parent());
    });
});

<强> Fiddle

答案 1 :(得分:5)

this没有引用该函数中的任何内容。

只需向锚点添加实际事件:

$('.edit').on('click', function(){
   console.log($(this).parent().parent());
   return false;
});

答案 2 :(得分:2)

不使用href="javascript:editAccount(),而是通过jQuery使用标准事件注册绑定editAccount

$(".edit").on("click", editAccount);

您也可以使用匿名函数,而不是单独定义editAccount

如果动态添加.edit链接,您可以使用事件委派:

$(document).on("click", ".edit", function (e) {
    //prevent following the link if you want
    e.preventDefault();

    console.log($(this).closest("td"));
});