Jquery在几个图像上添加了mouseup和mousedown事件

时间:2010-12-10 10:58:31

标签: javascript jquery html

我正在尝试在几个不同的图像上添加mouseup,mousedown,hover事件 - 唯一的问题是事件只发生在第一个图像上, 尝试使用each()函数似乎没有工作。 关于我如何做到这一点的任何建议?

    $(function() {

var filename = $('.imgover').attr('alt');

$('.rolloverimg').each(function(){
   $('#'+ filename).mouseup(function(){
      $(this).children("img").attr('src', 'content/images/buttons/'+ filename + '_up.png' );
    }).mousedown(function(){
      $(this).children("img").attr('src','content/images/buttons/' + filename + '_down.png');
    });

    $('#'+ filename).hover(
      function () {
        $(this).children("img").attr('src', 'content/images/buttons/'+ filename + '_hover.png');
      },
      function () {
        $(this).children("img").attr('src', 'content/images/buttons/' + filename + '_up.png');
      }
    );
});

});

<div class="hdr-btns rolloverimg">
      <a href="#"><img src="content/images/buttons/play_up.png" alt="play" id="play"  class="imgover" /></a>
      <a href="#"><img src="content/images/buttons/register_up.png" alt="register" id="register"  class="imgover" /></a>
</div>

4 个答案:

答案 0 :(得分:5)

无需实现循环,以便使用jQuery将事件添加到多个元素。您只需将事件应用于选择所需的所有元素的选择器即可。

例如,以下代码将MouseUp和MouseDown事件添加到具有rolloverimg类的元素内的所有img标记:

$('.rolloverimg img').mouseup(function () {
    alert('up')
}).mousedown(function () {
    alert('down');
});

如果你想快速测试一下,这是从你的源代码开始创建的完整工作示例:

<html>
<head>
    <title></title>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js"></script>
    <script type="text/javascript">
    $(function () {
        $('.rolloverimg img').mouseup(function () {
            alert('up')
        }).mousedown(function () {
            alert('down');
        });
    });
    </script>
</head>
<body>
    <div class="hdr-btns rolloverimg">
        <a href="#"><img src="content/images/buttons/play_up.png" alt="play" id="play" class="imgover" /></a>
        <a href="#"><img src="content/images/buttons/register_up.png" alt="register" id="register" class="imgover" /></a>
        <input type="button" value="text" />
    </div>
</body>
</html>

其他信息更新
如果您不想从div中选择所有img标记,而只是选择应用了imgover类的img标记,则可以使用以下选择器:

$(function () {
    $('.rolloverimg img.imgover').mouseup(function () {
        alert('up')
    }).mousedown(function () {
        alert('down');
    });
});

其他信息更新2
您可以使用$(this)访问当前选定的元素。例如:

$('.rolloverimg img.imgover').mouseup(function () {
    alert($(this).attr('id') + '_up')
}).mousedown(function () {
    alert($(this).attr('id') + '_down');
});

如果上述情况有所帮助或需要更多具体帮助,请与我们联系。

答案 1 :(得分:1)

输入代码:

var filename = $('。imgover')。attr('alt');

每个函数内部。

答案 2 :(得分:0)

这是simple way to do it

$('.rolloverimg').mouseover(function() {
    $('img', this).each(function () {
        $(this).attr('alt', $(this).attr('id') + '_over');
    })
}).mouseout(function() {
  $('img', this).each(function () {
        $(this).attr('alt', $(this).attr('id') + '_out');
    })
});

当然,juste替换attr('alt','in')来做你需要的(设置src属性),这只是一种显示选择元素逻辑的简单方法。

答案 3 :(得分:0)

你可以使用$('。rolloverimg img')。mouseup()等。

$('.rolloverimg img').mouseup(function(){
      $(this).children("img").attr('src', 'content/images/buttons/'+ filename + '_up.png' );
    }).mousedown(function(){
      $(this).children("img").attr('src','content/images/buttons/' + filename + '_down.png');
    });

$('.rolloverimg img').hover(
      function () {
        $(this).children("img").attr('src', 'content/images/buttons/'+ filename + '_hover.png');
      },
      function () {
        $(this).children("img").attr('src', 'content/images/buttons/' + filename + '_up.png');
      }
    );