如何将某些内容传递给函数,就好像它调用函数一样?
说我有这个功能
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
答案 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'));
}