jquery事件没有触发

时间:2014-04-25 06:46:01

标签: javascript jquery

我有两个事件放在$('$ gallery_slide_main_thumbs img')上,当我打电话时它们没有被触发。没有调用悬停和点击功能。当我将鼠标悬停在图像上时,鼠标指针会发生变化。

Jquery的::

$('#gallery_slide_main_thumbs img').hover(function(){
    $(this).animate({
        opacity: 1
    });
}, function(){
    $(this).animate({
        opacity: .66
    });
});

<div id="gallery_slide_main_thumbs"></div>

#gallery_slide_main_thumbs{
    width: 100%;
    height: 100px;
    position: absolute;
    z-index: 6;
    bottom: 0;
    opacity: 0;
    visibility: hidden;
    margin: 0;
    text-align: center;
}
#gallery_slide_main_thumbs img{
    margin: 5px;
    cursor: pointer;
    opacity: .66;
}

$('#gallery_slide_main_thumbs img').click(function(){
    $('#gallery_slide_main_thumbs img').eq(gallery_active_id).css({
        'border': '',
        'border-radius': '',
        'margin-bottom': ''
    });
});

id为“gallery_slide_main_thumbs”的div在启动时创建,并在调用另一个函数时填充图像,

编辑:开启。('click','img',function(){})无法解决问题。

3 个答案:

答案 0 :(得分:0)

您需要使用 event delegation 来动态创建元素,方法是应用 .on()

$('#gallery_slide_main_thumbs').on('click','img',function() {
   $('#gallery_slide_main_thumbs img').eq(gallery_active_id).css({
       'border': '',
       'border-radius': '',
       'margin-bottom': ''
    });
});

对于.hover()事件,您可以使用:

$('#gallery_slide_main_thumbs').on('mouseenter', 'seconddiv', function( event ) {
    $(this).animate({
        opacity: 1
    });
}).on('mouseleave', 'seconddiv', function( event ) {
    $(this).animate({
        opacity: .66
    });
});

答案 1 :(得分:0)

我相信图片会动态插入以下div:

<div id="gallery_slide_main_thumbs"></div>

因此,这意味着图像不会出现在初始标记中,并会因其他事件而被添加到div中。

在这种情况下,良好的旧事件绑定不起作用。所以这里涉及另一种被称为事件委托

的现象

详细了解此=&gt; https://learn.jquery.com/events/event-delegation/

所以你的案例中的通用代码就是。

$(element).on('click',function(){});
$(element).on('hover',function(){});

我希望这适合你。如果您需要更多帮助,请与我联系。

答案 2 :(得分:0)

部分同意Talha Masood,但此事件作为完整代码需要在document.ready事件上编写或作为函数调用。所以,可能就像下面这样:

$(document).ready(function(){
    $(element).on('click',function(){});
    $(element).on('hover',function(){
    });
});

如果大家都同意,请告诉我。