2016-09-16 1 views
0

J'ai le morceau de code ci-dessous:Javascript - Le gestionnaire de clic ignoré/sautée

$(document).ready(function(){ 
     var rebuild = getParameterByName("rebuild"); 

     var createdStructures = $('#AtoZContentDiv').children().length; 


     if ((rebuild !== undefined && rebuild !== null && rebuild.indexOf("true") === 0) || (createdStructures === 0)) 
     { 
      // clean up pre-existing data 
      cleanUp(); 


      // create container structure 
      createFormLinkContainers(); 

      // Call SP web services to retrieve the information and create the A to Z 
      retrieveListData(); 

      completeInitialization(); 
     } 
     else 
     { 
      aggregateAll = jQuery.parseJSON($('#hdnAggregateAll').val()); 
      aggregatePersonal = jQuery.parseJSON($('#hdnAggregatePersonal').val()); 
      aggregateBusiness = jQuery.parseJSON($('#hdnAggregateBusiness').val()); 
      ministryAggregate = jQuery.parseJSON($('#hdnMinistryAggregate').val()); 
      caAggregate = jQuery.parseJSON($('#hdnCAAggregate').val()); 
      sTaxAggregate = jQuery.parseJSON($('#hdnSTaxAggregate').val()); 
      bTaxAggregate = jQuery.parseJSON($('#hdnBTaxAggregate').val()); 
      leTaxAggregate = jQuery.parseJSON($('#hdnLETaxAggregate').val()); 

      var type = getParameterByName("filter"); 

     $("#tab-all").click(function() 
     { 
       loadit('all'); 
     });   


     $("#tab-business").click(function() 
     { 
      loadit('business'); 
     }); 

     $("#tab-personal").click(function() 
     { 

     }); 


     $(document).on('click','#tab-personal',function(e){ 
     loadit('personal');  
     }); 


       buildFilterMenu(); 
       loadit('all'); 
     } 
    }); 

J'ai essayé d'utiliser les deux:

$(document).on('click','#tab-personal',function(e){ 
loadit('personal');  
}); 

et

$("#tab-personal").click(function() 
{ 

}); 

et quand je placer un point d'arrêt à l'intérieur de l'un d'entre eux, aucun n'est touché.

HTML:

<div id="tabs" style="display: inline-block;"> 
    <ul><li><a class="selected" id="tab-all" href="#" type="all"><b>All Forms</b></a></li> 
    <li><a id="tab-business" href="#" type="business"><b>Business</b> </a></li> 
    <li><a id="tab-personal" href="#" type="personal"><b>Personal</b> </a></li></ul> 
</div> 

complet Code: http://pastebin.com/vzLPX3cU

Pourquoi est-ce qui se passe?

+0

Avez-vous essayé d'exécuter l'ajout écouteur dans la console? Essayez ceci: $ ("# tab-personal") .on ("click", function() { console.log ("click!"); }); – Sabik

+0

J'ai mis un point d'arrêt dans le débogueur des outils de développement de Chrome. J'avais essayé de mettre un console.log ('<<<< personal') mais le code n'a pas été touché. – Brian

+0

exemple avec vous fonctionne DOM https://jsfiddle.net/k06w4mos/. Peut-être avez-vous des erreurs et votre code ne s'exécute pas complètement? – Sabik

Répondre

0
$(document).ready(function(){ 
    var rebuild = getParameterByName("rebuild"); 
    var createdStructures = $('#AtoZContentDiv').children().length; 
    if ((rebuild !== undefined && rebuild !== null && rebuild.indexOf("true") === 0) || (createdStructures === 0)){ 
     // clean up pre-existing data 
     cleanUp(); 

     // create container structure 
     createFormLinkContainers(); 

     // Call SP web services to retrieve the information and create the A to Z 
     retrieveListData(); 
     completeInitialization(); 
    }else{ 
     aggregateAll = jQuery.parseJSON($('#hdnAggregateAll').val()); 
     aggregatePersonal = jQuery.parseJSON($('#hdnAggregatePersonal').val()); 
     aggregateBusiness = jQuery.parseJSON($('#hdnAggregateBusiness').val()); 
     ministryAggregate = jQuery.parseJSON($('#hdnMinistryAggregate').val()); 
     caAggregate = jQuery.parseJSON($('#hdnCAAggregate').val()); 
     sTaxAggregate = jQuery.parseJSON($('#hdnSTaxAggregate').val()); 
     bTaxAggregate = jQuery.parseJSON($('#hdnBTaxAggregate').val()); 
     leTaxAggregate = jQuery.parseJSON($('#hdnLETaxAggregate').val()); 

     var type = getParameterByName("filter"); 
      buildFilterMenu(); 
      loadit('all'); 
    } 
    $("#tab-all").click(function(){ 
      loadit('all'); 
    });   

    $("#tab-business").click(function(){ 
     loadit('business'); 
    }); 

    $(document).on('click','#tab-personal',function(e){ 
     loadit('personal');  
    }); 
}); 
+0

Un $ (document) .ready() séparé que vous voulez dire? Parce que le code est déjà comme ça. – Brian

+0

oui, l'événement click doit être dans la fonction '$ (document) .ready()'. Et assurez-vous que vous avez inclus la bibliothèque Jquery. – Samir

+0

Je n'ai pas compris les modifications que vous avez apportées au code. Pouvez-vous élaborer s'il vous plaît? – Brian

0

cela se produit car vous n'avez pas désactivé le comportement par défaut de l'élément d'ancrage. sur l'événement cliquez sur Arrêter le comportement par défaut avec event.preventDefault()

quelque chose comme ça

$("#tab-personal").click(function(event){ 
    event.preventDefault(); # this will prevent the default behavior 
    # do something 
}); 

comme il est déjà à l'intérieur fonction ready() vous ne devez pas envelopper dans une fonction plus prêt

+0

Malheureusement, cela n'a pas fonctionné – Brian

+0

Utilisez-vous les onglets jquery? – Bhadra

+0

Non, onglets personnalisés avec HTML et CSS. – Brian