多次调用Jquery单击代码

多次调用Jquery单击代码,jquery,click,Jquery,Click,我尝试将我的代码添加到一个提琴中,它在那里运行良好,所以请尝试在我的网站上直接分析它。 以下是网页: 如果您转到groceries.js,第39行是#addNewSection图像上clic事件的代码 然后在页面中单击大绿色+按钮,将弹出一个公式集,然后再次单击大绿色+符号。您会注意到.click()函数中的代码被多次调用 有人知道为什么吗 编辑: 我找到了错误的根源。Y在名为init的函数中向事件添加了挂钩,类似于: function init() { $("#addNewSecti

我尝试将我的代码添加到一个提琴中,它在那里运行良好,所以请尝试在我的网站上直接分析它。 以下是网页:

如果您转到groceries.js,第39行是#addNewSection图像上clic事件的代码

然后在页面中单击大绿色+按钮,将弹出一个公式集,然后再次单击大绿色+符号。您会注意到.click()函数中的代码被多次调用

有人知道为什么吗

编辑:

我找到了错误的根源。Y在名为init的函数中向事件添加了挂钩,类似于:

function init() {
     $("#addNewSection").click( function(e){
          newSectionButtonClicked();
     });
}
并在
$(function()..
中添加了一个调用,但我也从其他站点调用了这个init(),因此每次我调用它时,都会有一个新的函数实例连接到click事件!!只有在我们还没有连接的情况下,才有方法连接到事件???

function drawMarket(){
function drawMarket(){
    $("#market").html("<ul id='marketList'>");
    $.each(sections, function(idx, obj){
        var name = htmlDecode(obj.Name);
        var listItem = $('<li  />');
        listItem.append(name);
        var innerComponent = $("<ul class='section' id='S_"+obj.Id+"'/>");

            var ItemName = htmlDecode(ItemObj.Name);
            innerComponent.append("<li id='"+ItemObj.Id+"' class='item'>"+ItemName+"</li>");

        listItem.append(innerComponent);
        listItem.append("<div class='clearer'/>");
        $("#marketList").append(listItem);
    });
    init();
}
$(“#市场”).html(“”); $。每个(部分、功能(idx、obj){ 变量名称=htmlDecode(对象名称); 变量listItem=$(“
  • ”); 追加(名称); var innerComponent=$(“
      ); var ItemName=htmlDecode(ItemObj.Name); innerComponent.append(“
    • “+ItemName+”
    • ”); 追加(innerComponent); listItem.追加(“”); $(“#市场列表”)。追加(列表项); }); init(); }
  • 请在您的groceries.js中替换此功能,它将对您有所帮助

    您不需要在该函数中添加每个循环,因为它将始终附加内部文本{ $(“#市场”).html(“”); $。每个(部分、功能(idx、obj){ 变量名称=htmlDecode(对象名称); 变量listItem=$(“
  • ”); 追加(名称); var innerComponent=$(“
      ); var ItemName=htmlDecode(ItemObj.Name); innerComponent.append(“
    • “+ItemName+”
    • ”); 追加(innerComponent); listItem.追加(“”); $(“#市场列表”)。追加(列表项); }); init(); } 请在您的groceries.js中替换此功能,它将对您有所帮助

      您不需要在该函数中添加每个循环,因为它将始终附加内部文本{ $(“#市场”).html(“”); $。每个(部分、功能(idx、obj){ 变量名称=htmlDecode(对象名称); 变量listItem=$(“
    • ”); 追加(名称); var innerComponent=$(“
        ); var ItemName=htmlDecode(ItemObj.Name); innerComponent.append(“
      • “+ItemName+”
      • ”); 追加(innerComponent); listItem.追加(“”); $(“#市场列表”)。追加(列表项); }); init(); } 请在您的groceries.js中替换此功能,它将对您有所帮助

        您不需要在该函数中添加每个循环,因为它将始终附加内部文本{ $(“#市场”).html(“”); $。每个(部分、功能(idx、obj){ 变量名称=htmlDecode(对象名称); 变量listItem=$(“
      • ”); 追加(名称); var innerComponent=$(“
          ); var ItemName=htmlDecode(ItemObj.Name); innerComponent.append(“
        • “+ItemName+”
        • ”); 追加(innerComponent); listItem.追加(“”); $(“#市场列表”)。追加(列表项); }); init(); } 请在您的groceries.js中替换此功能,它将对您有所帮助


          您不需要在该函数中执行每个循环,因为它始终会附加内部文本,即您的代码在同一元素上多次注册单击处理程序。如果是,请尝试检查代码。我也遇到过这种情况。第一次单击调用一次,第二次单击调用两次,然后每次单击注册一个a单击同一处理程序上的处理程序


          另外,如果您可以向我们展示代码以供查看。

          您的代码是否在同一元素上多次注册了单击处理程序。如果是,请尝试检查代码。这也是我所面临的情况。第一次单击调用一次,第二次单击调用两次,然后每次单击都在同一处理程序上注册一个单击处理程序


          另外,如果您可以向我们展示代码以供查看。

          您的代码是否在同一元素上多次注册了单击处理程序。如果是,请尝试检查代码。这也是我所面临的情况。第一次单击调用一次,第二次单击调用两次,然后每次单击都在同一处理程序上注册一个单击处理程序


          另外,如果您可以向我们展示代码以供查看。

          您的代码是否在同一元素上多次注册了单击处理程序。如果是,请尝试检查代码。这也是我所面临的情况。第一次单击调用一次,第二次单击调用两次,然后每次单击都在同一处理程序上注册一个单击处理程序

          另外,如果您可以向我们展示代码以供查看。

          您应该只调用init()函数一次,或者删除此函数中click event的赋值,并将其放入只调用一次的函数中,例如:

          $("#addNewSection").click( function(e){
            newSectionButtonClicked();
          }); 
          
          每次调用init()函数时都会调用此函数,因此每次调用init()时都会再次触发此事件

          您应该只调用此注册一次

          您应该只调用init()函数一次,或者删除此函数中click事件的赋值,并放入一个只调用一次的函数,例如
          jQuery(document).ready(function() {
              $("#addNewSection").click( function(e){
                  newSectionButtonClicked();
              });
          });
          
          jQuery(document).ready(function() {
              init();
          });