我有一个 ASP.NET 菜单,它在渲染时会生成许多锚标记。
我的要求是
- 如果 href 或锚标记是“”或“#”,则防止回发。
- 使光标不显示手
首先,我检查了一个生成的锚标记的标记
<a href="#"
class="popout level1 static"
tabindex="-1"
onclick="__doPostBack('ctl00$NavigationMenu','Unternehmen')">
Company
</a>
我看到了一个已经绑定的点击事件并写了一个快速的 jquery 片段。
$(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.unbind('click');
为anchor.kill('click');
尝试e.preventDefault();
通过附加替换e.stopPropogation
,甚至return false;
尝试替换anchor.bind('click', function(e){
为anchor.click(function(e) {
似乎没有任何效果。我的代码可能有什么问题?