我怎样才能被点击 link href?
How can i get clicked link href?
当用户尝试退出表单并单击菜单时,我需要确认用户;我尝试使用 preventDefault 方法及其工作,但我需要获取菜单项的 href,用户在确认响应为真后单击它来设置。
我有这个 HTML 代码:
<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>
我尝试在每次 link 单击后查找 links 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')
等于未定义。
我怎样才能被点击 link href?
在 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
}
});
});
添加到 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');
}
});
});
当用户尝试退出表单并单击菜单时,我需要确认用户;我尝试使用 preventDefault 方法及其工作,但我需要获取菜单项的 href,用户在确认响应为真后单击它来设置。 我有这个 HTML 代码:
<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>
我尝试在每次 link 单击后查找 links 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')
等于未定义。
我怎样才能被点击 link href?
在 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
}
});
});
添加到 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');
}
});
});