JQuery load()使Jquery函数多次触发

时间:2016-05-23 03:58:01

标签: javascript php jquery ajax

这是我的代码。它加载页面内容而不刷新。

问题是,当我点击由jQuery和ajax处理的按钮时,它会在我加载页面时多次触发。

例如如果加载2页,jQuery将触发两次

如果我加载4页,jQuery将加载4次。

 <script>
        $(document).ready(function(){
            //set trigger and container

            var trigger = $('#nav ul li a'),
                container = $('#container');
            //do on click


            trigger.on('click', function(e){
                /***********/
                 e.preventDefault();

               /* reload content without refresh */
                //set loading img
                $('#container').append('<div id = "loading">WAIT...  <img src = "img/ajax-loader-small.gif" alt="Currently loading"   /></div>');
                //change img location to center
                $("#loading").css({"position": "absolute", "left": "50%", "top": "50%"});
                //get the  trigger to reload the contents
                var $this = $(this),
                    target = $this.data('target');

                container.load(target + '.php');

              //  return false;
                $(trigger).die('click');
            });
        });

这个脚本会在我通过load()函数加载页面时触发多次,这意味着相同的帖子会多次插入到数据库中

<script>

    $(document).ready(function(){


    $(document).on("click",".fa-pinterest-square",function(e) {


        var form = $(this).find('form'); //Since the form is child to <i>

        $.ajax({
            url: "includes/widgets/add_pains.php",
            type: "POST",
            data: form.serialize(),
            success: function(data) {
                alert(data);

            }
        });

    });
    });

</script>

如何解决此问题?

3 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为每次加载脚本时都没有清除事件监听器,并且事件监听器相互堆叠会导致多次触发。

XmlSuite

.off()方法删除使用.on()附加的事件处理程序。

答案 1 :(得分:0)

请使用它来解决您的问题

    trigger.unbind().click(function()

         //code 
   });

答案 2 :(得分:0)

我通过在index.php中插入脚本来修复问题,可能是由于包含主页而被调用了几次。