将$(this)从函数传递给函数

时间:2015-07-10 03:05:53

标签: javascript jquery

我在不同的课程中有两个不同的事件:

$('.box1').click(function(){
$(this).find('something').css('red')
}

$('#otherId .box2').change(function(){
$(this).find('something').css('red')
}

但我打算将它们拆分为函数以避免重复代码

function getDetails(this){
  this.find(".something").css('red');
}

但是如何稍后调用该函数?将$(this)传递给函数?

$('#otherId .box2').change(function(){
getDetails($(this))
}

3 个答案:

答案 0 :(得分:7)

this是关键字,因此它不能是参数名称

function getDetails(el) {
    el.find(".something").css('red');
}

$('#otherId .box2').change(function () {
    getDetails($(this))
})

答案 1 :(得分:1)

关键字PATH不能用作参数,但您可以继续在函数体中使用this

this

然后这样称呼它:

function getDetails()
{
    $(this).find(".something").css('red');
}

另请参阅:Function.call()

答案 2 :(得分:0)

如果你想得到一个输入值然后改变它并输出它旁边的最终值,你可以使用这样的东西来传递它:

var finalOutput;

function getDetails(args) {
    args = "Hello World";
    return args;
}

$('.box2').change(function(){
    var inputValue = $(this).val();
    finalOutput = getDetails(inputValue);

    $('.box2').after('<b>' + finalOutput + '</b>');
});

这是一个有效的例子:

http://jsfiddle.net/La4v9mL0/