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