2

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

说我有这个功能

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

4

5 回答 5

4

.call()functions 的一个方法,所以顺序是相反的:

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

不过,作为参数传递通常也是可行的:

function ShowId(elem) {
    alert($(elem).attr('id'));
}
ShowId($(this).parent('div'));
于 2013-07-18T07:19:52.167 回答
2

差不多,试试这个:

ShowId.call($(this).parent('div'))
于 2013-07-18T07:19:40.063 回答
0

传递 jQuery 元素:

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

$('div .link').click(function() {
  $(this).parent('div').call(ShowId($(this)));
});
于 2013-07-18T07:19:35.667 回答
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'));
}
于 2013-07-18T07:20:06.753 回答
0

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

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

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

尝试这个

于 2013-07-18T07:25:46.007 回答