javascript - 如何使用动态div ID

标签 javascript jquery variables

我在这里查看了很多非常接近的答案,但由于我的 jQuery 知识非常零碎,我无法使它们相关。所以我就去问一下。希望大家不要介意!

所以,这是脚本:

$("#button1").mouseenter(function(){
  $("#a1").fadeIn('100', function() { });

  $("#button1").mouseleave(function(){
      $("#a1").fadeOut('100', function() {}); 
  }); 
});

我有多个按钮,我想在 mouseenter 上激活相应的箭头。

而不是为每一对重复脚本 - #button2#arrow2 等 - 我怎样才能在 $() 中放入一些简洁的变量 位并且它可以工作吗?听起来很简单,我确信有一种方法是我的密集找不到的。

这是 HTML(对于那些请求它的人):

 <div id="buttons">
    <p><a href="#"><img src="images/1.png" name="button1" id="button1" /></a></p>
    <p><a href="#"><img src="images/2.png" name="button2" id="button2" /></a></p>
    <p><a href="#"><img src="images/3.png" name="button3" id="button3" /></a></p>
    <p><a href="#"><img src="images/4.png" name="button4" id="button4" /></a></p>
    <p><a href="#"><img src="images/5.png" name="button5" id="button5" /></a></p>
    </div>

<div class="arrow" id="a1"><img src="images/arrow.png" width="747" height="75" /></div>
<div class="arrow" id="a2"><img src="images/arrow.png" width="747" height="75" /></div>
<div class="arrow" id="a3"><img src="images/arrow.png" width="747" height="75" /></div>
<div class="arrow" id="a4"><img src="images/arrow.png" width="747" height="75" /></div>
<div class="arrow" id="a5"><img src="images/arrow.png" width="747" height="75" /></div>
<div class="arrow" id="a6"><img src="images/arrow.png" width="747" height="75" /></div>

最佳答案

您的解决方案无法扩展。

您正在为 dom 中的每个元素分配事件处理程序。

这是我对 jQuery 的不满之一。这使得很容易做错这些事情并搬起石头砸自己的脚。

您需要的是事件委托(delegate)。

本质上,这个概念是在 dom 树的更高层有一个事件处理程序,用于监听冒泡的事件。因此,您可能在列表上处理鼠标事件,而不是在列表项本身上,而是在文档上的单个事件处理程序中。

看看http://api.jquery.com/on/

你的代码应该是这样的:

$('body').on('mouseenter', '#buttons img', function (e) {
    $('#a' + $(this).attr('id').slice(-1)).fadeIn(300);
});

$('body').on('mouseleave', '#buttons img', function (e) {
    $('#a' + $(this).attr('id').slice(-1)).fadeOut(300);
});

请注意,我实际上仅使用 id 来获取按钮和箭头之间的链接。您可能会考虑跳过所有 id,而只根据元素在其父元素中的索引进行查找。

可以在这里找到工作示例:http://jsfiddle.net/GNs44/1/

关于javascript - 如何使用动态div ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8415609/

相关文章:

javascript - dojo 对话框中的滚动条在 IE9 中不起作用

javascript - 为从数组加载的数据指定 id 标签

jquery - 多个分隔符的自动完成功能在 IE 中不起作用

javascript - 使用 bootstraptoggle 动态更改切换

javascript - Promise 链接, "this"未定义

javascript - 如何使用 bootstrap-multiselect 即时隐藏/显示选项?

javascript - Assets 在 Rails 中是如何工作的?

javascript - 当我的变量已经在 var 声明中时,为什么它需要 'var' 声明?

javascript - 当数据链接到变量时,d3js 不进行绘图

session - 在 Lift Scala 中存储 session 变量