JQuery事件不会首先点击

时间:2017-12-22 07:19:29

标签: javascript jquery

我知道有几个类似的问题,但在我的案例中似乎都没有。

我有这个JQuery代码片段:

$(document).ready(function() {

  CartCount();

  $('.product-item input[type="submit"]').on('click', CartCount);

});

function CartCount() {
  var cartItems = 0;
  var cartItemTypes = iGetCookie("NumberOrdered", 0);
  var cartItem;
  for(i = 1; i <= cartItemTypes; i++) {
    cartItem = String(GetCookie("Order." + i)).split("|");
    cartItems += parseInt(cartItem[1]);
  }
  $('.top-cart-count').html(cartItems);
}

代码在第二次点击后完美运行,但绝不是第一次。第二次单击后,.top-cart-count显示应该在上一次单击时显示的cartItems值。有什么想法吗?

编辑:对不起,如果我不清楚发生了什么。我实际上有多个cookie:1表示用户订购的所有不同类型的项目的总和,以及每个项目类型的1。在每个单独类型的cookie中是一个数组,其中包含索引1处的数量(仅该类型).CardCount()基本上只是总结了所有不同类型的所有数量(如果有任何订购的项目)(至少1种类型) )。基本上,我正在尝试更新项目计数并在提交表单时显示此更新的计数。由于存储不同类型数量的cookie默认设置为0,我认为我不需要在显示之前调用add函数(除非我正在更新值)。

我的HTML:

<form onSubmit="return AddToCart(this)">
        <input type="submit"  value="Add to Cart">
      </form>

1 个答案:

答案 0 :(得分:0)

@wow和@zerrone对于由其他东西引起的问题是正确的(另一个异步运行的函数)。当表单 .product-item输入[type =&#34; submit&#34;] 属于提交时,我正在更新 cartItems 。同时,当点击输入时,我试图显示更新的值。出于某种原因,在更新功能( AddToCart )之前调用了显示功能( CartCount )。

我添加了将代码更改为:

$(document).ready(function() {

  CartCount();

});

function updateCart(form) {
  AddToCart(form);
  CartCount();
}

function CartCount() {
  var cartItems = 0;
  var cartItemTypes = iGetCookie("NumberOrdered", 0);
  var cartItem;
  for(i = 1; i <= cartItemTypes; i++) {
    cartItem = String(GetCookie("Order." + i)).split("|");
    cartItems += parseInt(cartItem[1]);
  }
  $('.top-cart-count').html(cartItems);
}

在我的HTML中,我这样调用 updateCart <form onSubmit="return updateCart(this)">

感谢所有人的帮助!