JavaScript / jQuery:如何将元素作为'this'传递给函数?

时间:2013-07-18 07:17:07

标签: javascript jquery

如何将某些内容传递给函数,就好像它调用函数一样?

说我有这个功能

function ShowId() {
  alert($(this).attr('id'));
}

和这个HTML

<div id='div1'>
  <a class='link'>Some link</a>
</div>

我想这样做

$('div .link').click(function() {
  $(this).parent('div').call(ShowId); // What is the right syntax?
});

它应该提醒:div1

5 个答案:

答案 0 :(得分:4)

.call()是一种function s的方法,因此顺序是相反的:

ShowId.call($(this).parent('div'));

尽管作为论据传递通常也是可行的:

function ShowId(elem) {
    alert($(elem).attr('id'));
}
ShowId($(this).parent('div'));

答案 1 :(得分:2)

差不多,试试这个:

ShowId.call($(this).parent('div'))

答案 2 :(得分:0)

传递jQuery元素:

function ShowId($this) {
  alert($this.attr('id'));
}

$('div .link').click(function() {
  $(this).parent('div').call(ShowId($(this)));
});

答案 3 :(得分:0)

使用此代码:

$('div .link').click(function() {
  var parentObj = $(this).parent('div');
  ShowId(parentObj); // call the function with arguments simply
});

你的功能将是:

function ShowId(that) {
  alert($(that).attr('id'));
}

答案 4 :(得分:0)

您可以将元素作为函数中的对象传递 -

$('div .link').click(function() {
  ShowId($(this).parent('div'));
});

function ShowId(Obj) {
  alert(Obj.attr('id'));
}

Try This