Jquery函数应该在每次单击触发器时重复(但它没有)

时间:2012-08-05 05:50:41

标签: jquery css function html

好吧,我有这个漂亮的小网站,它有一个div overflows:hidden内容不适合包装。每次点击一个范围margin-top: $value-120px,我想class'd .maisfilme。这就是我得到的

    $(document).ready(function (){
$(".maisfilme").on("click", function() {
     var $mtop = $(this).css('margin-top');

        var $vai = (parseInt($mtop)+ 110 + "px");
    $("#filme").css ({
        'margin-top' : "-"+$vai
    });
});
});

它实际上完成了这项工作。它获得了margin-top,增加了它的int值+ 120px,在它之前放了一个 - 然后滑动div。 真正的问题是它只发生在ONCE。如果我再次点击.maisfilme,则不会发生任何事情 有人可以知道我该怎么办,所以每次点击.maisfilme时函数都会动作吗?

1 个答案:

答案 0 :(得分:0)

第二次你这样做 - ( - 110 + 110)并没有像你想要的那样增加幅度。如果你想让它每次都变得更负,你需要改变符号的逻辑。

此外,您从$(this)获取css,但在$("#filme")上设置它,因此每次都不会上升,除非它们恰好是同一个对象。每次点击都需要积累它们。

每次让它变得更负面,你可以这样做:

$(document).ready(function (){
    $(".maisfilme").on("click", function() {
        var $mtop = $(this).css('margin-top');

        var $vai = (parseInt($mtop) - 110) + "px";
        $(this).css ({
            'margin-top' : $vai
        });
    });
});

或略有不同的版本,如果margin-top的初始值不为零(更像您的第一次迭代所做的那样),则会产生稍微不同的结果:

$(document).ready(function (){
    $(".maisfilme").on("click", function() {
        var $mtop = $(this).css('margin-top');

        var $vai = (-(Math.abs(parseInt($mtop)) + 110)) + "px";
        $(this).css ({
            'margin-top' : $vai
        });
    });
});