2017-10-18 23 views
0

Je dois confirmer les utilisateurs lorsqu'ils essaient de quitter les formulaires et cliquer sur le menu; J'essaye d'employer la méthode de preventDefault et son travail, mais j'ai besoin d'obtenir l'href d'élément de menu que l'utilisateur clique dessus pour placer après que la réponse de confirmation soit vraie. Je possède ce code HTML:Comment puis-je cliquer sur le lien href?

<ul class="page-sidebar-menu page-header-fixed page-sidebar-menu-hover-submenu "> 
     <li class="start "> 
       <a href="/Dashboard"> 
        <i class="icon-home"></i> 
        <span class="title">Dashboard</span> 
       </a> 
     </li> 
     <li class=" "> 
       <a href="javascript:;" class="auto"> 
        <i class="icon-wrench"></i> 
        <span class="title">Administration</span> 
       </a> 
       <ul class="sub-menu"> 
         <li> 
           <a href="/OrganizationUnits"> 
            <span><i class="sub-menu-icon icon-layers"></i> Organization units</span> 
           </a> 
         </li> 
       </ul> 
     </li> 
     <li class=" "> 
       <a href="javascript:;" class="auto"> 
       <a href="javascript:;" class="auto"> 
        <span class="title">Base Info</span> 
       </a> 
       <ul class="sub-menu"> 
         <li> 
           <a href="javascript:;" class="auto"> 
            <i class="fa fa-map-marker"></i> 
            <span class="title">Area</span> 
            <span class="arrow"></span> 
           </a> 
           <ul class="sub-menu"> 
             <li> 
              <a href="/Country"> 
               <span><i class="sub-menu-icon fa fa-map-marker"></i> Countries</span> 
              </a> 
             </li> 
             <li> 
              <a href="/Zone"> 
               <span><i class="sub-menu-icon fa fa-map-marker"></i> Zones</span> 
              </a> 
             </li> 
           </ul> 
         </li> 
       </ul> 
     </li> 
</ul> 

J'essaie de trouver des liens href après chaque lien est cliquable. le code suivant est mon script java:

$('ul.page-sidebar-menu li a').click(function(e) { 
    e.preventDefault(); 
    confirm("Are You Sure To Exit From This Form?", function (isConfirm) { 
     if (isConfirm) { 
      window.location = $(this).attr('href'); 
     } 
    }); 
}); 

Mais $(this).attr('href') égal non défini. Comment puis-je obtenir le lien cliqué href?

+0

Essayez plutôt - si (event.target.tagName.toLowerCase() === 'a') { event.target.href; // c'est l'URL où pointe la balise d'ancrage. } –

Répondre

1

Inside confirm « gestionnaire de rappel s, la portée de this changements locaux à cette fonction,

changer donc à

$('ul.page-sidebar-menu li a').click(function(e) { 
    e.preventDefault(); 
    var $self = $(this); //notice this new line 
    confirm("Are You Sure To Exit From This Form?", function (isConfirm) { 
     if (isConfirm) { 
      window.location = $self.attr('href'); //notice $(this) is replaced by $self 
     } 
    }); 
}); 
1

Ajouter à gurvinder372 » réponse s, vous pouvez également utiliser la fonction de flèche au lieu de affecter this à $self.

$('ul.page-sidebar-menu li a').click(function(e) { 
    e.preventDefault(); 
    confirm("Are You Sure To Exit From This Form?", isConfirm => { 
     if (isConfirm) { 
      window.location = $(this).attr('href'); 
     } 
    }); 
});