【问题标题】:Disable anchor tag if href is Empty in ASP.NET如果 ASP.NET 中的 href 为空,则禁用锚标记
【发布时间】:2023-04-03 20:26:02
【问题描述】:

我有一个 ASP.NET 菜单,它在渲染时会生成许多锚标记。
我的要求是

  1. 如果 href 或 锚标记是“”或“#”。
  2. 使光标不显示 手

首先我检查了一个生成的锚标记的标记

    <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


    【解决方案1】:

    尝试在您的代码中使用anchor.removeAttr("onclick");

    【讨论】:

    • 成功了。非常感谢 :) 和上帝的爱!解绑事件不是正确的方法吗?
    • 一个是事件属性,另一个是 DOM 事件,两者都做同样的事情,不幸的是它们不必指向相同的处理程序
    • 谁否决了这个答案?那是非常非常不公平的。 @ivanov:我已经投票了。
    • @FarligOpptreden:我没告诉你。:)
    • 我没说你说我做了...我只是说我投了赞成票。 :)
    【解决方案2】:

    为什么不使用这些简单的代码行而不是删除事件处理程序。

    实际上我想在页面的查看模式下禁用我的链接。 它对我有用。

    在代码隐藏中:

    href.Attributes.Clear();
    href.Disabled = true;
    

    在源代码中:

    <a href="#" id="href" runat="server" onclick="Showpopup();" style="azimuth:left;" >Create New</a>
    

    【讨论】:

      【解决方案3】:

      与其删除事件处理程序,为什么不明确地将其替换为类似以下内容的内容:

      anchor.click(function() { return false; });
      

      【讨论】:

      • 那只会增加一个点击功能不是吗?
      • 会的,但我想值得一试看看会发生什么。 :)
      • -1 仔细阅读问题。不是说我试过了吗?
      • 哎呀,soz...好像我错过了最后一句话...:P
      • 谢谢先生!会做先生! (编辑:无意讽刺,承诺)
      【解决方案4】:

      只用空的href或“#”href遍历锚点怎么样?

      $(".menu a[href='#'], .menu a[href='']").unbind('click').css("cursor", "default");
      

      编辑:

      似乎.unbind 只会解除您使用.bind 方法绑定的事件:/

      .removeAttr 是 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-27
        • 2019-10-06
        • 1970-01-01
        • 2018-09-20
        • 2014-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-09-23
        相关资源
        最近更新 更多