我有以下附加到按钮元素的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'...,如下所示,但行为相同。
您将处理程序添加到DOM元素中,这意味着您的$ .bind()将在针对其选择器的任何元素上运行一次。删除元素后,事件处理程序也将被删除。
如果要继续处理该事件,请在重新添加这些元素时重新应用事件处理程序,或者使用$.on()
第二个选择器选项通过父级使用(只要未同时删除父级)。这称为事件委托。(的前身$.on()
称为$.delegate()
,但由于语法原因而更改。)
$(document).on('click', 'button', func...)
确保并使用第二个参数。也不要对施加处理程序body
,这通常是个坏主意;使用document
是否必须,或者最好是在DOM中更靠近元素的公共父对象(这样就不会进行不必要的事件管理)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句