在DOM之后加载的元素上使用.each

时间:2014-09-23 07:03:25

标签: jquery live each

我在选择JS动态注入的一系列链接时遇到了一些问题。基本上,构建了一个youtube列表并将其加载到DOM中。现在我想为它添加更多的炫耀(没有CSS动画,我在这里的挑战,真正测试动态jQuery页面的限制并获得乐趣)

但它只是选择了在DOM之后加载的元素,我尝试了大量搜索无法解决的解决方案。虽然我有几只熊,但到目前为止它已经过了1分钟。生日快乐!

以下是我正在尝试的内容,你可以看到它在行动中(相当失败)here

        $('.featured-video-link').each(function(){  // featured-video-links is added after DOM too
            $(this).live({
                mouseenter: function () {
                    $(this).find('.feat-vid-title').animate({ 'backgroundColor': 'rgba(62, 132, 210, 0.8)', 'color': 'rgba(255,255,255,1.0)' }, 'slow');
                },
                mouseleave: function () {
                    $(this).find('.feat-vid-title').animate({ 'backgroundColor': 'rgba(0,0,0,0.5)', 'color': 'rgba(255,255,255,0.8)' }, 'slow');
                }
            });         
        });

2 个答案:

答案 0 :(得分:1)

您不必遍历每个元素来绑定事件。只需这样做

$(".featured-video-link").hover(
    function() {
        $(this).find('.feat-vid-title').animate({ 'backgroundColor': 'rgba(62, 132, 210, 0.8)', 'color': 'rgba(255,255,255,1.0)' }, 'slow');
    }, function() {
       $(this).find('.feat-vid-title').animate({ 'backgroundColor': 'rgba(0,0,0,0.5)', 'color': 'rgba(255,255,255,0.8)' }, 'slow');
    }
);

答案 1 :(得分:1)

您可以使用以下语法,而不需要循环,

$(document).on({
    mouseenter: function () {
        $(this).find('.feat-vid-title').animate({
            'backgroundColor': 'rgba(62, 132, 210, 0.8)',
            'color': 'rgba(255,255,255,1.0)'
        }, 'slow');
    },
    mouseleave: function () {
        $(this).find('.feat-vid-title').animate({
            'backgroundColor': 'rgba(0,0,0,0.5)',
            'color': 'rgba(255,255,255,0.8)'
        }, 'slow');
    }
}, '.featured-video-link');