Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 .each()绑定悬停事件并将变量传递给处理程序函数_Javascript_Jquery_Css_Each_Jquery Hover - Fatal编程技术网

Javascript .each()绑定悬停事件并将变量传递给处理程序函数

Javascript .each()绑定悬停事件并将变量传递给处理程序函数,javascript,jquery,css,each,jquery-hover,Javascript,Jquery,Css,Each,Jquery Hover,我试图将一个悬停事件绑定到一些元素上,使用$.each遍历它们,其特点是我希望传递一个css类名作为悬停处理函数的参数,但似乎范围不是我所期望的。我已经试过了 $(document).ready(function () { var $madewithLabels = $("#made-with .label"); // Binding $madewithLabels.each(function (index) { // get bootstrap css

我试图将一个悬停事件绑定到一些元素上,使用$.each遍历它们,其特点是我希望传递一个css类名作为悬停处理函数的参数,但似乎范围不是我所期望的。我已经试过了

$(document).ready(function () {
    var $madewithLabels = $("#made-with .label");

    // Binding
    $madewithLabels.each(function (index) {
       // get bootstrap css classname for the current element in the loop
       var bsClass = getHoverClass($(this));
       console.info("css class is: " + bsClass + " - " + typeof(bsClass));

       $(this).hover(
           function (bsClass) {
               console.info(bsClass);
               $(this).addClass(bsClass);
           },
           function (bsClass) {
               console.info(bsClass);
               $(this).removeClass(bsClass);
           }
       );
    });
});
first console.info:getHover在事件绑定到文档就绪时获取正确的css类名字符串 第2/3rd console.info:当执行hover的处理函数时,bsClass是一个对象,我猜它是一个jQuery对象 我是这样解决的:

$(document).ready(function () {
    var $madewithLabels = $("#made-with .label");

    // Binding
    $madewithLabels.each(function (index) {
        $(this).hover(
            function () {
                $(this).addClass(getHoverClass($(this)));
            },
            function () {
                $(this).removeClass(getHoverClass($(this)));
            }
        );
    });
});
但我的问题是

使用$this是正确的解决方案吗

为什么当我将字符串变量传递给处理函数时,调用该函数时会得到一个对象?是因为某种类型的铸造吗?是因为关闭范围吗


感谢jQuery大师的回答

您在悬停回调中得到的是一个事件对象,如下所述:

汉德林

类型:函数事件事件对象

鼠标指针进入元素时要执行的函数

因此,在您的第一个示例更改中:

function (bsClass) {
为此:

function () {
因此,您继续使用以前计算过的原始bsClass。

我认为您的函数将获得两个传递给它的参数。所以它应该看起来像这个函数索引,item。使用项目1绑定悬停事件。我想应该是这样的:$item.hover。。。