Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将$(this)从函数传递到函数_Javascript_Jquery - Fatal编程技术网

Javascript 将$(this)从函数传递到函数

Javascript 将$(this)从函数传递到函数,javascript,jquery,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

我在不同的课程上有两个不同的活动:

$('.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))
}
这是一个关键字,因此不能是参数名

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

$('#otherId .box2').change(function () {
    getDetails($(this))
})
这是一个关键字,因此不能是参数名

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

$('#otherId .box2').change(function () {
    getDetails($(this))
})
关键字this不能用作参数,但可以在函数体中继续使用它:

function getDetails()
{
    $(this).find(".something").css('red');
}
然后这样称呼它:

$('#otherId .box2').change(function() {
    getDetails.call(this);
}
另请参见:

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

function getDetails()
{
    $(this).find(".something").css('red');
}
然后这样称呼它:

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

另请参见:

如果要获取输入值,则可以使用类似的方法传递它,然后更改它并在其旁边输出最终值:

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>');
});
以下是一个工作示例:


如果您想获得输入值,则可以使用类似的方法将其传递,然后对其进行更改并在其旁边输出最终值:

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>');
});
以下是一个工作示例:


这比打电话好吗?两者都一样。。。但我更喜欢将其作为参数传递,而不是更改我看到的执行上下文。这也更容易理解。这比使用call好吗?两者都一样。。。但我更喜欢将其作为参数传递,而不是更改我看到的执行上下文。这也更容易理解。@zerkms她就是这么说的。。。刚醒来,无法抗拒-@虫族她就是这么说的。。。刚醒来,无法抗拒-