2

レンダリング時に多くのアンカー タグを生成する ASP.NET メニューがあります。
私の要件は

  1. href またはアンカー タグが "" または "#" の場合にポストバックを防止します。
  2. カーソルが手を表示しないようにする

最初に、生成されたアンカー タグの 1 つのマークアップを確認しました

    <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) {

何も機能していないようです。私のコードの何が問題なのですか?

4

4 に答える 4

1

eventhandler を削除する代わりに、この単純なコード行を使用しないでください。

実際には、ページの表示モードでリンクを無効にしたいと考えています。それは私のために働いた。

コードビハインド:

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

ソースコード:

<a href="#" id="href" runat="server" onclick="Showpopup();" style="azimuth:left;" >Create New</a>
于 2011-07-28T07:50:31.067 に答える
0

空の href または "#" href のみを使用してアンカーをループするのはどうですか。

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

編集:

メソッド.unbindを使用してバインドしたイベントのみをバインド解除するようです.bind:/

.removeAttrです:)

于 2011-03-02T10:38:11.107 に答える
0

イベント ハンドラを削除する代わりに、次のようなものに明示的に置き換えてみませんか。

anchor.click(function() { return false; });
于 2011-03-02T10:40:08.810 に答える