避免在jQuery中重复使用.click()

时间:2013-07-24 00:09:24

标签: jquery

我有一个jQuery脚本,可以根据滚动位置触发点击。我希望能够再次单击此元素,如果用户返回到页面顶部,以便联系表单将隐藏自己。问题是它创建了一个循环。

    jQuery(window).scroll(function (event) {
        var y = $(this).scrollTop();
        if (y > 400) {
        $("#contactable-inner").click();
        $("#contactable-inner").unbind('click');}
    });

您可以到这里查看我正在处理的内容:http://algk.me

更新:

    $(window).scroll(function(){
        var y = $("body").scrollTop();
        var hidden = $('.hidden');
        if (y >= 1000 && (hidden.hasClass('visible'))){
        hidden.animate({"left":"-1000px"}, "slow").removeClass('visible');
        } else {
        hidden.animate({"left":"0px"}, "slow").addClass('visible');
        }
  });

知道如何让它在滚动上工作吗?

2 个答案:

答案 0 :(得分:1)

如果您使用jQuery的.show()怎么办?而不是模拟点击。

jQuery(window).scroll(function (event) {
    var y = $(this).scrollTop();
    if (y > 400) {
      $("#contactable").show();
    }
    else {
      $("#contactable").hide();
    }
});

答案 1 :(得分:0)

如果您希望点击处理程序只执行一次,那么您可以使用one,这将使您的处理程序只处理一次。

$("#contactable-inner").one('click', function(e){
    // code goes here
});

$(window).scroll(function (event) {
    var y = $(this).scrollTop();
    if (y > 400) {
        $("#contactable-inner").click();
    }
});

DEMO.