Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Jquery 将$(this)从一个函数传递到另一个函数_Jquery_Function_This - Fatal编程技术网

Jquery 将$(this)从一个函数传递到另一个函数

Jquery 将$(this)从一个函数传递到另一个函数,jquery,function,this,Jquery,Function,This,我希望能够声明一个可以与任何选择器或方法一起使用的函数,因此我认为可以像下面这样做,但它不起作用 这是为什么?:) 然而,这也将起作用: $('img').hover(imageClass); function imageClass() { var thisClass = $(this).attr('class'); console.log(thisClass) } 还有一个选择: $('img').hover(imageClass); function imageClas

我希望能够声明一个可以与任何选择器或方法一起使用的函数,因此我认为可以像下面这样做,但它不起作用

这是为什么?:)


然而,这也将起作用:

$('img').hover(imageClass);

function imageClass() {
    var thisClass = $(this).attr('class');
    console.log(thisClass)
}
还有一个选择:

$('img').hover(imageClass);

function imageClass(e) {
    var thisClass = $(e.target).attr('class');
    console.log(thisClass)
}

然而,这也将起作用:

$('img').hover(imageClass);

function imageClass() {
    var thisClass = $(this).attr('class');
    console.log(thisClass)
}
还有一个选择:

$('img').hover(imageClass);

function imageClass(e) {
    var thisClass = $(e.target).attr('class');
    console.log(thisClass)
}
您可以将hover事件中的
$(this)
作为
参数传递给
,只需更改
imageClass方法以接收参数即可

$(document).ready(function() {

    $('img').hover(function(){
        imageClass($(this));
    });

    function imageClass(obj) {
        var thisClass = obj.attr('class');
        console.log(thisClass)
    }

});
您可以将hover事件中的
$(this)
作为
参数传递给
,只需更改
imageClass方法以接收参数即可

$(document).ready(function() {

    $('img').hover(function(){
        imageClass($(this));
    });

    function imageClass(obj) {
        var thisClass = obj.attr('class');
        console.log(thisClass)
    }

});
你可以试试。它将允许您通过

如果你不明白,请告诉我。

你可以试试。它将允许您通过


如果您无法理解,请告诉我。

$(obj)
是一种过激行为。只需
obj
就足够了,您不需要在imageClass函数中再次使用$()包装obj,因为您已经将其作为jQuery对象传递了。它工作得很好:)-我还注意到并从$()中打开了obj,所以我对JS有一点了解,但还没有完全了解:)-非常感谢。您能告诉我将imageClass函数移到.ready函数之外的利弊吗?@afcdesign:没有任何显著的区别。除此之外,它在外部是不可用的-我不能说任何重要的..ready在文档的所有元素都准备好并且可以更多地访问时执行。正如zerkms所说的准备好了,在您从中调用它时没有明显的区别。ready
$(obj)
是一种过度使用。只需
obj
就足够了,您不需要在imageClass函数中再次使用$()包装obj,因为您已经将其作为jQuery对象传递了。它工作得很好:)-我还注意到并从$()中打开了obj,所以我对JS有一点了解,但还没有完全了解:)-非常感谢。您能告诉我将imageClass函数移到.ready函数之外的利弊吗?@afcdesign:没有任何显著的区别。除此之外,它在外部是不可用的-我不能说任何重要的..ready在文档的所有元素都准备好并且可以访问更多时执行。正如zerkms所说的准备好了,与您从中调用它没有显著的区别。在这种情况下,您甚至不需要
$.proxy()
<代码>imageClass.call(此)将完成这项工作。而
$.proxy()
适用于需要通过预定义作用域传递函数引用的情况(这里不是这种情况)。在这种情况下,甚至不需要
$.proxy()
<代码>imageClass.call(此)将完成这项工作。然而,
$.proxy()
适用于需要通过预定义范围传递函数引用的情况(这里不是这种情况)。