jQuery bind()仅触发一次

L4zl0w

我有以下附加到按钮元素的jquery脚本。目前,我仅测试一个按钮,但是想法是单击任何按钮都将读取该按钮的ID,然后将其用作URL的一部分以回调Web服务器。我正在测试的按钮在主页上,即当您到达站点时可见。但是,甚至主页面(以及按钮本身)也是通过AJAX调用加载的!该按钮也是脚本自身清空的#content元素的一部分,如下所示。

我看到的行为:-如果我停留在主页上并单击按钮,则它可以正常工作。然后,如果我向后导航,它将不再起作用。

  • 如果我到达该站点并离开主页导航并返回,该按钮将不再起作用。

模式似乎是,如果从DOM中取出按钮,则脚本将不会运行。

$(document).ready(function(){
    $("button").bind('click', function(){
          var route = element.attr("id");
          $.ajax(
          {
            type: "GET",
            url: '/' + route,
            dataType: "html",
            async: true,
            success: function(data)
            {
                $( "#content" ).empty();
                $( "#content" ).append( data );
            } 
           }); 
    });
});

我是JQuery和AJAX的新手,即使我确定这是一个琐碎的问题,我也无法在线找到答案。

我正在使用Chrome和JQuery 2.1.1。

非常感谢

更新:也尝试使用$('body button')。on('click'...,如下所示,但行为相同。

贾里德·法瑞什(Jared Farrish)

您将处理程序添加到DOM元素中,这意味着您的$ .bind()将在针对其选择器的任何元素上运行一次。删除元素后,事件处理程序也将被删除。

如果要继续处理该事件,请在重新添加这些元素时重新应用事件处理程序,或者使用$.on()第二个选择器选项通过父级使用(只要未同时删除父级)。这称为事件委托(的前身$.on()称为$.delegate(),但由于语法原因而更改。)

$(document).on('click', 'button', func...)

确保并使用第二个参数。也不要对施加处理程序body,这通常是个坏主意;使用document是否必须,或者最好是在DOM中更靠近元素的公共父对象(这样就不会进行不必要的事件管理)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

仅触发一次jQuery函数?

来自分类Dev

jQuery(window).resize函数仅触发一次,而不是每个像素触发一次

来自分类Dev

jQuery(window).resize函数仅触发一次,而不是每个像素触发一次

来自分类Dev

jQuery .change()事件仅触发一次

来自分类Dev

更改事件处理程序仅触发一次,jQuery

来自分类Dev

仅触发一次jQuery滚动事件

来自分类Dev

仅触发一次jQuery mousemove事件

来自分类Dev

jQuery Bootstrap Datepicker Click事件仅触发一次

来自分类Dev

更改事件处理程序仅触发一次,jQuery

来自分类Dev

jQuery UI效果.on单击仅触发一次

来自分类Dev

仅触发一次jQuery滚动事件

来自分类Dev

jQuery Mobile vclick事件仅触发一次

来自分类Dev

jQuery animate仅通过keypress事件触发一次

来自分类Dev

jQuery .change()函数必须仅触发一次

来自分类Dev

单击事件仅触发一次JQuery / bPopup

来自分类Dev

jQuery触发器('click')仅工作一次

来自分类Dev

jQuery 单击事件仅触发一次

来自分类Dev

jQuery新手:仅触发一次回调

来自分类Dev

带有动画文本的.fadeToggle上的jQuery .click事件仅触发一次

来自分类Dev

jQuery keyUp函数触发多次,即使事件仅发生一次

来自分类Dev

jQuery单击仅工作一次

来自分类Dev

jQuery函数仅运行一次

来自分类Dev

jQuery仅删除一次div

来自分类Dev

jQuery:addClass仅一次

来自分类Dev

jQuery函数仅工作一次

来自分类Dev

jQuery仅追加一次

来自分类Dev

jQuery:Eventhandler仅工作一次

来自分类Dev

jQuery脚本仅执行一次

来自分类Dev

jQuery单击仅工作一次