Jquery 页面更改不会';不要删除旧事件

Jquery 页面更改不会';不要删除旧事件,jquery,events,jquery-mobile,mobile,Jquery,Events,Jquery Mobile,Mobile,我在jquerymobile上遇到了很多问题,我真的很想打自己的脑袋 我有一个包含以下代码的页面: $(document).on('pageinit ',function(){ $("#phone_number").on("blur", function (event, ui) { $.mobile.changePage("<?php echo base_url(); ?>mobile/products_by_phone", { type: "POST",

我在jquerymobile上遇到了很多问题,我真的很想打自己的脑袋

我有一个包含以下代码的页面:

$(document).on('pageinit ',function(){
$("#phone_number").on("blur", function (event, ui) {


    $.mobile.changePage("<?php echo base_url(); ?>mobile/products_by_phone",  {
     type: "POST",
     data: {phone :  $('#phone_number').val() },
    transition: "flip"} );

});
});
现在,当我更改页面时,它会工作,但当我再次调用
blur
事件时,页面会更改两次,然后再更改4次,然后再更改8次,以此类推

按“浏览器后退”按钮可以工作,但当我尝试按“前进”按钮时,什么也没发生

注意事项:

  • 我想这可能与模糊有关,每次更改页面都会触发模糊,所以我尝试添加一个按钮并绑定到单击,但同样的事情发生了
  • 我想可能是我绑定到
    文档
    的事实导致了这一点,所以我尝试绑定到页面id,但根本不起作用(没有绑定任何事件,因此不会发生任何事情),然后我尝试触发创建事件,但也没有绑定事件

为什么会发生这种情况?

我不熟悉jQuery mobile,但我假设
changePage()
函数使用AJAX调用加载新页面内容。如果是这样的话,那么现有的事件处理程序将保留下来,每次只需添加更多的事件处理程序即可


在(重新)绑定事件处理程序之前,请尝试使用该函数删除它。

这是jQuery mobile的常见问题。这是因为多个事件绑定到同一个元素。每次返回上一页时,都会再次绑定相同的事件

这个问题有两种解决方案

在将事件绑定到某个元素之前,请检查同一事件是否尚未绑定

示例:

$('.menu-browse:Event(!' + touchEvent + ')').each(function(){
    $('.menu-browse').bind(touchEvent, function(e) {

    });
});
$(document).unbind();
$(document).bind('pageinit', function(e) {

});
在这里,您将看到事件过滤器的完整实现:

或:

每次绑定事件时,请先解除绑定

示例:

$('.menu-browse:Event(!' + touchEvent + ')').each(function(){
    $('.menu-browse').bind(touchEvent, function(e) {

    });
});
$(document).unbind();
$(document).bind('pageinit', function(e) {

});
或:

或者在您的情况下:

$(document).off(); 
$(document).on('pageinit',function(){
    alert();
});

遗憾的是,这个问题没有可靠的解决方案。

您所要做的就是添加要将init事件绑定到的页面。。。假设您想要这个绑定一次,您确实想要,您只需要更具体一些

例如:

$(document).on('pageinit', '#page1', function(e){...});

将#page1替换为您的页面ID。

首先是出现
语法错误,无法识别的表达式:不支持的pseudo:Event
和off-and-die都不起作用,同样的情况也在发生,这仍然无法回答“前进”按钮不起作用的原因。如果在新页面中有重要意义,我的事件也不会被绑定。。。