【发布时间】:2023-04-03 20:26:02
【问题描述】:
我有一个 ASP.NET 菜单,它在渲染时会生成许多锚标记。
我的要求是
- 如果 href 或 锚标记是“”或“#”。
- 使光标不显示 手
首先我检查了一个生成的锚标记的标记
<a href="#"
class="popout level1 static"
tabindex="-1"
onclick="__doPostBack('ctl00$NavigationMenu','Unternehmen')">
Company
</a>
我看到一个已经绑定的点击事件并写了一个快速的jquery sn-p。
$(document).ready(function () {
$(".menu a").each(function () {
var anchor = $(this);
var url = (anchor.attr('href').length == 0) ? "" : anchor.attr('href').trim();
if (url == "" || url == "#") {
//unbind the __dopostback
anchor.unbind('click');
anchor.bind('click',function (e) {
e.preventDefault();
});
anchor.css("cursor", "default");
}
});
});
当我将鼠标悬停在空链接上时,光标显示的是默认链接而不是手,这意味着我的锚点已被识别。但是当我点击锚点时,回发发生了!
尝试用anchor.kill('click');替换anchor.unbind('click');
尝试通过附加 e.stopPropogation 甚至 return false; 替换 e.preventDefault();
尝试用anchor.click(function(e) { 替换anchor.bind('click', function(e){
似乎没有任何效果。我的代码可能有什么问题?
【问题讨论】:
标签: javascript jquery asp.net postback unbind