这个简单的jQuery slideUp和slideDown有什么问题?

时间:2010-02-07 10:01:56

标签: php jquery

当鼠标悬停在拇指大小的图像上时,我想显示图像实际视图。但是当鼠标放在第一个图像上时会出现然后消失,而不是第二个和后续图像的情况。

它在Internet Explorer中运行得很好,但在Firefox或Chrome中却不行。

$file - runs displays all the files in a directory
$id_v - is a simple count on the number of files
$path1 - is the path

    <script language="javascript" type="text/javascript">
        $(document).ready(function() {
            $('#view').hide();

            $('#ig<? echo $id_v; ?>').bind('mouseover', function(ev) {
                 $('#view').slideDown();
                $("#view1").attr({ src: "<? echo $path1.'/'.$file?>" });
            });

            $('#ig<? echo $id_v; ?>').bind('mouseout', function(ev){
                $('#view').slideUp();
            });
        });
    </script>

4 个答案:

答案 0 :(得分:1)

请注意,我对您的HTML的解释可能完全错误。请将您的问题发布在所有相关代码中。 - 帮助我们,帮助您。 :运算

请注意(如果您不知道)您可以编辑您的问题以使用相关信息进行更新。

如果没有看到HTML,就无法肯定地说,但请考虑以下因素:

$('#view').hide();

这里'view'是一个id。 ID必须是唯一的。您不能将它们分配给多个元素。

我假设您想要制作动画的每个项目在HTML中获得id='view',当您在javascript中使用以下内容在HTML中执行class='view'时:

$('.view').hide()
etc...

试一试。

答案 1 :(得分:0)

如果没有实例,很难说(对我来说)......

你有没有尝试过:

  • 预加载图像(使用css 技术或预加载jQuery 插件)?

  • 更改鼠标悬停/鼠标移除 mouseenter / mouseleave?

仅供参考,在jQuery 1.4中,您可以使用多个事件。 所以你的代码可以像这样重写:

$('#ig<? echo $id_v; ?>').bind({
  mouseover: function() {
    $('#view').slideDown(); 
    $("#view1").attr({ src: "<? echo $path1.'/'.$file?>" });
  },
  mouseout: function() {
    $('#view').slideUp();
  }
});

答案 2 :(得分:0)

可能会有很多事情。

如果图像#view被修复或显示在缩略图的位置上,则会在您出现的那一刻在缩略图中触发鼠标输出。

另一件可能导致#view瞬间隐藏的事情是,#view元素会修改整个文档的位置,如果它位于顶部或类似的东西。 尝试删除mouseout绑定并使用Internet Explorer加载页面,并查看文档的修改方式。

答案 3 :(得分:0)

我建议使用悬停方法而不是mouseover和mouseout:

<script language="javascript" type="text/javascript">
    $(function() {
        $('#view').hide();

        $('#ig<? echo $id_v; ?>').bind('hover', 
            // over
            function() {
                $('#view').slideDown(); 
                $("#view1").attr({ src: "<? echo $path1.'/'.$file?>" });
            },

            // out
            function() {
                $('#view').slideUp();
            }
        ); 
    });
</script>

我还建议(为了让您的生活更轻松一点),而不是将新方法绑定到每个新ID,只需为每个新ID分配一个类并使用

<script language="javascript" type="text/javascript">
$(function() {
    $('#view').hide();

    $('.some-class').hover( 
        // over
        function() {
            $('#view').slideDown(); 
            $("#view1").attr({ src: "<? echo $path1.'/'.$file?>" });
        },

        // out
        function() {
            $('#view').slideUp();
        }
    ); 
});
</script>