Отключить тег привязки, если href пуст в ASP.NET - PullRequest
2 голосов
/ 02 марта 2011

У меня есть меню ASP.NET, которое генерирует много тегов привязки при визуализации.
Мои требования были

  1. , чтобы предотвратить обратную передачу, если href или тег привязки равен "" или "#".
  2. чтобы курсор не показывал руку

Сначала я проверил разметку одного из сгенерированных тегов привязки

    <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 ]

2 голосов
/ 02 марта 2011

попробуйте использовать anchor.removeAttr("onclick"); в вашем коде

1 голос
/ 28 июля 2011

Вместо удаления обработчика событий, почему бы не использовать эти простые строки кода.

На самом деле я хочу отключить мою ссылку в режиме просмотра страницы.Это сработало для меня.

В коде позади:

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

В исходном коде:

<a href="#" id="href" runat="server" onclick="Showpopup();" style="azimuth:left;" >Create New</a>
0 голосов
/ 02 марта 2011

Вместо удаления обработчика событий, почему бы не заменить его явно чем-то вроде:

anchor.click(function() { return false; });
0 голосов
/ 02 марта 2011

Как насчет петли через якоря только с пустым href или "#" href.

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

РЕДАКТИРОВАТЬ:

Кажется, .unbind только отсоединитсобытия, которые вы связали, используя метод .bind: /

.removeAttr is is:)

...