Javascript jQuery单击事件问题-框架7

Javascript jQuery单击事件问题-框架7,javascript,jquery,ajax,html-framework-7,Javascript,Jquery,Ajax,Html Framework 7,所以我有几个问题。第一个。。。我有两个页面,一个products.html页面和一个search.html页面。products.html页面在.onPageAfterAnimation()中运行一些Ajax;从数据库中获取产品并显示它们。返回的HTML包含一个部分,用户可以在其中增加和减少文本框中的数值 当我打开products.html页面时,增加或减少值1的按钮开始起作用,但是,当我进入search.html并使用Android的后退按钮返回products.html页面时(我有push

所以我有几个问题。第一个。。。我有两个页面,一个
products.html
页面和一个
search.html
页面。
products.html
页面在.onPageAfterAnimation()中运行一些Ajax;从数据库中获取产品并显示它们。返回的HTML包含一个部分,用户可以在其中增加和减少文本框中的数值

当我打开
products.html
页面时,增加或减少值1的按钮开始起作用,但是,当我进入
search.html
并使用Android的后退按钮返回
products.html
页面时(我有
pushState=true
)按下增加/减少按钮,增加/减少2。如果我再次尝试做同样的事情,它会增加/减少3,以此类推

这是我的products.html页面中的增加/减少代码:

myApp.onPageAfterAnimation('catalogs', function (page) {

  //Increse/decrease product quantity
  $(“.promo-screen-content”).on(“click”, “.addToCartBtn”, function(){
    var productid = $(this).attr(“data-productId”),
        currentvalue = parseInt($('#txtQuantity' + productid).val());

    $('#txtQuantity' + productid).val((currentvalue + 1).toString());
  });

  $(“.promo-screen-content”).on(“click”, “.removeFromCartBtn”, function(){
    var productid = $(this).attr(“data-productId”),
        currentvalue = parseInt($('#txtQuantity' + productid).val());

    if(currentvalue > 1){
        $('#txtQuantity' + productid).val((current_value – 1).toString());
    }
  });

});
有人知道为什么会发生这种情况以及如何解决吗

我的第二个问题有点不同。每当我点击一个按钮时,它都会点击并执行该过程3到4次。例如,如果我在单击某个通知时显示该通知,它会显示该通知3或4次


我不知道这些是常见的还是人们遇到过的问题。非常感谢您的帮助

我把代码放在了错误的页面回调中。我必须把它放在
.onPageInit()中回调

你什么时候调用上述代码?(绑定何时发生)。我这样问是因为问题是您多次绑定了相同的处理程序(因此它们会运行多次)。因此,快速修复方法可能是在再次bing之前使用
off
解除绑定处理程序<代码>$(“.promo屏幕内容”).off('click','.addToCartBtn').on('click','.addToCartBtn',…)
$(“.promo屏幕内容”).off('click','.removeFromCartBtn').on('click','.removeFromCartBtn',…)
。但是必须有一个基于框架7的更正确的方法,我没有使用框架7,所以我不能提出任何相关的建议。默认情况下,所有页面都是使用Ajax加载的。我不知道这是否与此有关,因为当我转到
search.html
然后返回到
products.html
然后刷新该页面时,它又开始工作了。因此,在第二个页面加载Ajax并返回之后发生这种情况。<代码> Of()>代码>是一个创可贴解决方案——您不应该在页面上多次分配这些事件处理程序。我认为,
$(document).ready
将是处理程序更合适的位置。@BrianMoreno从docs()中可以看出,
onPageInit
事件可能是更好的选择。