2014-11-10 4 views
-3

Как отключить тег привязки при нажатии с помощью jQuery? Я попробовал e.preventDefault();, но отключил все теги привязки, а не тот, который был нажат.Как отключить тег привязки

$(".header_menu .header_menu_res ul > .menu-item a, .content_res .header_menu_res ul > .menu-item a").live("click",function(e) { 
e.preventDefault(); 
     if($(this).find(".adv_categories").length==1) { 
      if($(this).find('.adv_categories').hasClass("importantRule")) { 
       $(this).find('.adv_categories').removeClass("importantRule"); 
       $(this).removeClass("importantRuleButton"); 
      } else { 
       if($(this).siblings(".menu-item").find(".sub-menu").hasClass("importantRule")) { 
        $(this).siblings(".menu-item").find(".sub-menu").removeClass("importantRule"); 
       } 
       $(this).find('.adv_categories').addClass("importantRule"); 
       $(this).addClass("importantRuleButton"); 
      } 
     } 
    }); 

Вот HTML от литий

<li id="menu-item-36" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-36"><a class="primary" href="http://www.test.co.uk/about-us/"><em class="icon-info"></em>About Us</a> 
<ul class="adv_categories"><li></li></ul></li> 

Что происходит страница по-прежнему идет в about-us. Я хочу, чтобы он был отключен. Когда я использовал e.preventDefault();, показал sub-menu.

+0

может у меня есть пример, пожалуйста? – user892134

+0

Если это делается для всех якорных тегов, а не для одного, вы хотите, то вам нужно быть более конкретным в своем селекторе. – krillgar

+0

check edit Я сделал более конкретный и все тот же результат. – user892134

ответ

0

Связанный с этим ответом jsFiddle, который иллюстрирует решение.

На высоком уровне вы регистрируете обработчик для щелчка на якоре и при вызове функции, связанной с обработчиком, передается событие в качестве параметра. Затем можно попросить, чтобы событие перестало распространяться, и результат не будет обрабатываться по умолчанию для якоря, который будет навигацией.

HTML

<a id="myA" href="http://www.ibm.com">Go to IBM</a> 

JavaScript

$(function() { 
    $("#myA").click(function(e){ 
     alert("Clicked"); 
     e.preventDefault(); 
    }); 
}); 
+0

является '.click' для конкретного привязанного клика? Я использовал '.live (« click »)'? – user892134

+0

В jQuery можно указать «селектор», который используется для определения набора элементов. В результате селектора могут быть применены другие модификации. В приведенном выше примере он говорит: «Найти элемент с идентификатором« myA »и добавить к нему обработчик кликов». Селектор можно изменить, чтобы использовать классы, идентификаторы, типы элементов и многое другое, чтобы выбрать, к чему вы хотите применить обработчик. – Kolban

+0

Я знаю это, но что, если у них есть все тот же класс. Я хочу, чтобы '$ (this)' anchor был отключен. – user892134

Смежные вопросы