javascript - 当事件触发时,如何在 javascript 中使用数组来匹配 div?

标签 javascript jquery arrays function

我有一组两个 div - 第一组:当人们将鼠标悬停在这些 div 上时,它将触发一个事件,第二组:当事件被触发时,将显示这些 div。 当您将鼠标悬停在第一组中的某个 div 上时,它应该显示第二组中相应的 div。我认为将鼠标悬停 div 与要显示的正确 div 相匹配的一种简单方法是使用数组。我已经能够正确附加事件监听器,但我不知道如何设置它,以便当您将鼠标悬停在数组的一个对象上时,它会显示具有相同索引号的数组对象。我想如果我能弄清楚如何识别我鼠标悬停的对象的索引号,我就可以让它工作。我尝试了很多东西,但没能创造出任何有效的东西。代码如下:

<script>
$(document).ready(function(){


//create array of divs to mouse over 
var ar = new Array();
ar[0] = $("#home"); 
ar[1] = $("#doc");

var length = ar.length;

//create array of divs to display when event is fired 
var des = new Array();
des[0] = $("#homeDes");
des[1] = $("#docDes");


// start for
for ( var i = 0; i< length; ++i )
{
ar[i].bind("mouseover",function(){$(des[i]).css("display","block");});
ar[i].bind("mouseout",function(){$(des[i]).css("display","none");});
} 
//end for

}); 
//end 

</script>

最佳答案

我倾向于采取更灵活的方法来解决此问题,以便您在更改 HTML 时无需更改 JavaScript。考虑对需要绑定(bind)的元素进行分类并提供数据属性来指定目标。要绑定(bind)的 div 的 HTML 可能如下所示:

<div id="home" class="mouseoverToggleTrigger" data-target="#homeDes">...</div>

jQuery 可能如下所示:

$(document).ready(function(){

    $('.mouseoverToggleTrigger').hover(function() {
        var $target = $($(this).data('target'));
        $target.toggle();
    }
}); 

请注意,这是假设您使用的是 HTML5,默认情况下,jQuery 将 data-* 转换为可通过 data() 检索的值。

对于非 HTML5 的页面,这种更通用的解决方案将起作用

$(document).ready(function(){

    $('.mouseoverToggleTrigger').hover(function() {
        var $target = $($(this).prop('data-target'));
        $target.toggle();
    }
});

这带来了额外的一点灵 active ,那就是您现在不必将自己限制在目标映射的一对一触发器上。您可以为 data-target 值指定类名称或其他 jQuery 选择器,以获得高度自定义的行为,例如一个触发器切换某个类中属于另一类子级的所有元素。

关于javascript - 当事件触发时,如何在 javascript 中使用数组来匹配 div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20505406/

相关文章:

jquery - 内联元件上的倾斜端盖

javascript - camelCase 到 kebab-case

javascript - 第一个函数在 javaScript 中结束后如何运行第二个函数?

javascript - 如何获取跨度标签的值?

java - 打印字符串数组的替代元素

c++ - 填充数组会导致数组周围的堆栈被破坏

c# - 如果 bool 数组中的所有元素都为真?

javascript - Firefox 删除持久性 Cookie

javascript - 比较 JS 中 2 个对象的属性集以找出哪些属性发生了变化以及发生了什么变化?

JQuery 远程验证传递额外参数?