1

我有一个功能:

function test(e){
            $('.movie').find('.moreInfo').removeClass('moreInfoShow');
            e.parent().find('.moreInfo').addClass('moreInfoShow');
            $("#movieBox").isotope('reLayout');

            e.parent().find('.moreInfo').css("opacity", "0");
            e.parent().find('.moreInfo').animate({opacity: 1}, 500);
        }

由以下方式调用:

$("#movieBox").on('mouseover', '.moviePoster', function(event){test($(this));});

问题是我希望在页面加载时调用该函数。我需要将“this”传递给函数,但我没有让它工作的运气。

这是我期望的工作:

test($(".moviePoster").first());

(所有代码都在“$(document).ready”函数中)

4

2 回答 2

1

无小提琴:

改变这个:

$("#movieBox").on('mouseover', '.moviePoster', function(event){test($(this));});

$("#movieBox").on('mouseover', '.moviePoster', test);

然后测试函数内部的 $(this) 应该指向触发事件的 jQuery 对象。

使用“test($(this))”在回调中调用测试函数将立即执行该函数,而不是在触发事件时。

更新:

完成此操作后,您当然需要在页面加载时触发 mouseover 事件。请参阅 Jashwant 关于如何做到这一点的评论。

更新我错了。

function(event){test($(this));}

当然不会立即触发回调函数。只有在这样的情况下才会发生这种情况:

$("#movieBox").on('mouseover', '.moviePoster', test($(this)));

对不起!

于 2012-09-08T16:53:36.560 回答
0

mouseover如评论中所述,在页面加载时触发事件。

$("#movieBox").find('.moviePoster').trigger('mouseover');

参考

于 2012-09-08T18:52:10.270 回答