jquery:将此传递给子函数

时间:2009-09-25 04:09:06

标签: javascript jquery

我有这样的事情:

$('element.selector').live("click", function (){
    run_some_func ();
});

$('element.selector2').live("click", function (){
    run_some_func ();
});

现在在函数中我需要使用$(this):

function run_some_func () {
    $(this).show();
}

如何让函数知道$(this)是被点击的element.selector?

感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用call函数更改要执行的函数的上下文(设置this关键字):

$('element.selector').live("click", function (){
  run_some_func.call(this); // change the context of run_some_func
});

function run_some_func () {
  // the this keyword will be the element that triggered the event
}

如果你需要将一些参数传递给该函数,你可以:

run_some_func.call(this, arg1, arg2, arg3); // call run_some_func(arg1,arg2,arg3)
                                            // and change the context (this)

答案 1 :(得分:1)

你不能把$(this)传递给你的函数,以便:

$('element.selector').live("click", function (){
        run_some_func ($(this));
});

..然后

run_some_func(obj){
    obj.do_something();
})