【问题标题】:Jquery Function running multiple timesJquery函数多次运行
【发布时间】:2015-11-05 13:07:55
【问题描述】:

我在我的页面上使用了两个脚本,并且有一个通用的点击函数可以记录一个用户的点击次数。因此,当我单击文档中的任何元素时,应运行单击函数,然后运行同一元素上的其他函数。但在我的情况下,click 函数在将控件传递给另一个函数之前运行多次。

/************ 1st Jquery Script ***************/
    function($) {
      $(function(e) {
       $('.signupCustom').click(function(){
        var email = $('#form-email').val()
        var password = $('#pass').val()
        var firstName= $('#form-first-name').val()
        var lastName= $('#form-last-name').val()
        var number= $('#form-mobile').val()
        var type=$('#sel1').val()

        $.ajax({
            url: '/login',
            type: 'GET',
            data: {
                'email': email,
                'password':password,
                'firstName':firstName,
                'lastName':lastName,
                'number':number,
                'type':type
            },
            success: function(data){
                if ($('#sel1').val() == "Travel-Agent"){
                    window.location.href = "/agentVerification.html"
                }
                else{
                    window.location.href = "/dashboardTraveller"
                }
            }
        })
    })

    $('.login').click(function(){
        var email = $('#form-username').val()
        var password= $('#form-password').val()
        $.ajax({
            url: '/loginCustom',
            type: 'GET',
            data: {
                'email': email,
                'password':password
            },
            success: function(data){
                window.location.href = data['url']
            }
        })
    })

    $('.destinationsButton').click(function(){

        var url="/destinations";
        window.location=url;
    })


});   })(jQuery);

我已将链接附加到包含第二个脚本的 html 页面。

Link to Page

如果你去这个链接,有一个图片:

当我单击登录按钮时,单击功能会在控制转到其他功能之前运行多次。我希望点击功能运行一次,然后控制应该转到其他功能。

我尝试了e.stopPropagation,但如果同一页面上出现弹出窗口,则弹出窗口不会打开。这里点击登录,弹出来。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    你有什么理由使用下面的吗?

    jQuery('*').on("click",function(e){});
    

    我认为这可能会更好

    jQuery('body').on("click",function(e){});
    

    祝你好运

    【讨论】:

    • 是的,有一个原因,我想检测文档内的每一次点击。所以这就是我用这个的原因。
    • 谢谢克里斯托弗,我做了特别的编辑,它工作了............非常感谢:)
    • 多次触发的原因是所有包装器在使用“*”时也会向它们冒泡 - 所以每个包装器也会触发事件。
    【解决方案2】:

    我不知道你卡在哪里,但你可以使用one 来运行一次点击功能:

    $(selector).one('click',function(){
       //code runs only one click
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多