我有一个ASP.NET菜单,在渲染时会生成许多锚标记 我的要求是
首先,我检查了其中一个生成的锚标记的标记
<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) {
似乎没什么用。我的代码有什么问题?
答案 0 :(得分:2)
尝试在代码中使用anchor.removeAttr("onclick");
答案 1 :(得分:1)
为什么不使用这些简单的代码行,而不是删除eventhandler。
实际上我想在页面的查看模式中禁用我的链接。 它对我有用。
在代码隐藏中:
href.Attributes.Clear();
href.Disabled = true;
在源代码中:
<a href="#" id="href" runat="server" onclick="Showpopup();" style="azimuth:left;" >Create New</a>
答案 2 :(得分:0)
如何使用空的href或“#”href循环遍历锚点。
$(".menu a[href='#'], .menu a[href='']").unbind('click').css("cursor", "default");
修改强>
似乎.unbind
只会取消绑定您使用.bind
方法绑定的事件:/
.removeAttr
是:)
答案 3 :(得分:0)
不是删除事件处理程序,为什么不明确地用以下内容替换它:
anchor.click(function() { return false; });