2017-10-18 160 views
0

我需要确认用户何时尝试退出表单并单击菜单;我尝试使用preventDefault方法及其工作,但我需要在确认响应为真后,获取用户单击的菜单项的href设置。 我有这样的HTML代码:我怎样才能获得点击链接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> 

我试图找到链接的href后各个环节的点击。以下代码是我的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'); 
     } 
    }); 
}); 

但是$(this).attr('href')等于undefined。 如何获得点击链接href?

+0

尝试此代替 - 如果(event.target.tagName.toLowerCase()=== 'A') { event.target.href; //这是锚标记指向的网址。 } –

回答

1

里面confirm的回调处理程序的this范围改变局部的功能,

所以将其更改为

$('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

添加到gurvinder372的答案,你也可以用箭头的功能,而不是将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'); 
     } 
    }); 
});