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

时间:2022-11-27 17:51:21

I have the following anchor tag in a td in my table:

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

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

I would like to find the parents of this td within my editAccount() function, doing the following:

我想在editAccount()函数中找到这个td的父节点,执行以下操作:

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

However, I keep getting null in my console

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

3 个解决方案

#1


5  

You need pass the element under question

你需要传递有问题的元素

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

and

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

or using function.call.

或使用function.call。

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

and

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

Using Jquery to bind the event.

使用Jquery绑定事件。

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

and

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

Fiddle

小提琴

#2


5  

this does not refer to anything in that function.

这并不是指该功能中的任何内容。

Just add an actual event to the anchor:

只需向锚添加一个实际事件:

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

#3


2  

Instead of using href="javascript:editAccount(), bind editAccount using standard event registration via jQuery:

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

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

You can also use an anonymous function instead of defining editAccount separately.

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

In case the .edit links are added dynamically, you can use event delegation:

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

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

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

#1


5  

You need pass the element under question

你需要传递有问题的元素

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

and

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

or using function.call.

或使用function.call。

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

and

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

Using Jquery to bind the event.

使用Jquery绑定事件。

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

and

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

Fiddle

小提琴

#2


5  

this does not refer to anything in that function.

这并不是指该功能中的任何内容。

Just add an actual event to the anchor:

只需向锚添加一个实际事件:

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

#3


2  

Instead of using href="javascript:editAccount(), bind editAccount using standard event registration via jQuery:

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

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

You can also use an anonymous function instead of defining editAccount separately.

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

In case the .edit links are added dynamically, you can use event delegation:

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

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

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