Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 I';我试图整合我的代码…为什么';我不能这样做吗?_Javascript_Jquery - Fatal编程技术网

Javascript I';我试图整合我的代码…为什么';我不能这样做吗?

Javascript I';我试图整合我的代码…为什么';我不能这样做吗?,javascript,jquery,Javascript,Jquery,如果你看不出我的其他问题,我是自学成才的新手。我正在尝试整合我的一些js代码。我有两个分区,a0级和a1级。我想为每个(相同的事件)附加一个mouseenter事件 这是我的,这(希望)是不言自明的。a0和.a1是我的原始代码,.f0和.f1表示我(失败)的合并尝试。为什么我不能做一个“for”循环(或者,如果可以,为什么我总是以值为“2”的循环结束?) (如果有一种方法可以在jquery中实现,那很好) 完整演示请参见上面的小提琴: $(".a0").on("mouseenter",funct

如果你看不出我的其他问题,我是自学成才的新手。我正在尝试整合我的一些js代码。我有两个分区,a0级和a1级。我想为每个(相同的事件)附加一个mouseenter事件

这是我的,这(希望)是不言自明的。a0和.a1是我的原始代码,.f0和.f1表示我(失败)的合并尝试。为什么我不能做一个“for”循环(或者,如果可以,为什么我总是以值为“2”的循环结束?)

(如果有一种方法可以在jquery中实现,那很好)

完整演示请参见上面的小提琴:

$(".a0").on("mouseenter",function(){
        $(this).html("value: 0");
});
$(".a1").on("mouseenter",function(){
        $(this).html("value: 1");
});

/* my failed attempt to consolidate the above code */
for (var i=0; i<2; i++){ 
    $(".f"+i).on("mouseenter",function(){
        $(this).html("value: "+ i);
    });
}
$(.a0”)。在(“鼠标指针”,函数()上{
$(this.html(“值:0”);
});
$(.a1”)。在(“鼠标指针”,函数()上{
$(this.html(“值:1”);
});
/*我整合上述代码的尝试失败*/
对于(变量i=0;iQuick&Dirty)
更优雅
为了以更优雅的方式解决您的问题,让我们首先了解代码无法工作的原因

您正在定义两个回调,它们将读入i的值

但是,当鼠标进入元素时,我已经设置为2

您可以使用闭包来防止这种情况:

for (var i=0; i<2; i++){ 
  (function(j) {
    $(".f"+i).on("mouseenter",function(){
      $(this).html("value: "+ j);
    });
  })(i);
}
for(变量i=0;iQuick&Dirty)
更优雅
为了以更优雅的方式解决您的问题,让我们首先了解代码无法工作的原因

您正在定义两个回调,它们将读入i的值

但是,当鼠标进入元素时,我已经设置为2

您可以使用闭包来防止这种情况:

for (var i=0; i<2; i++){ 
  (function(j) {
    $(".f"+i).on("mouseenter",function(){
      $(this).html("value: "+ j);
    });
  })(i);
}

for(var i=0;i问题在于i是一个引用,在调用处理程序时,它是===2
以下内容适合我

var assignME = function (i) {
    $(".f"+i).on("mouseenter",function(){
        $(this).html("value: "+ i);
    });
};

for (var i=0; i<2; i++){
    assignME(i);
}
var assignME=函数(i){
$(.f“+i).on(“mouseenter”,function()){
$(this.html(“值:+i”);
});
};

对于(var i=0;i而言,问题在于i是一个引用,在调用处理程序时,它是===2 以下内容适合我

var assignME = function (i) {
    $(".f"+i).on("mouseenter",function(){
        $(this).html("value: "+ i);
    });
};

for (var i=0; i<2; i++){
    assignME(i);
}
var assignME=函数(i){
$(.f“+i).on(“mouseenter”,function()){
$(this.html(“值:+i”);
});
};

对于(VarI=0;一个“新手”的最佳技巧之一):学会给变量、函数、类等有意义的名称。这是“新手”的最佳技巧之一:学会给变量、函数、类等指定有意义的名称。我觉得很恶心,因为它不可扩展,并且避免教授基本问题。@Dave…很好的观点…他的代码可以工作,但希望学习一个更可扩展的解决方案。事实上,这段代码只是为了变得很小,如果你有很多其他类,这不是最好的解决方案要处理。+1,谢谢你的跟进。IMO很恶心,因为它不可扩展,并且避免讲授底层问题。@Dave…很好的观点…他的代码可以工作,但希望学习一个更可扩展的解决方案。事实上,这段代码只是为了变得很小,如果你有很多其他类要处理,这不是最好的解决方案。+1,谢谢谢谢你的跟进。