Отключите определенную ссылку с помощью javascript, чтобы другие оставались активными

#javascript #jquery #mobile #navigation

#javascript #jquery #Мобильный #навигация

Вопрос:

У меня есть эта структура, и я хочу отключить определенные ссылки, не оказывая влияния на другие ссылки в определенном div.

 <div class="navigation">
<a href"#">DISABLE THIS LINK</a>
<ul class="submenu">
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
</ul>
<a href"#">DISABLE THIS LINK</a>
<ul class="submenu">
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
</ul>
<a href"#">DISABLE THIS LINK</a>
<ul class="submenu">
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
<li><a href="#">KEEP THIS LINK ENABLED</a></li>
</ul>
</div>
  

Я попробовал это с чем-то вроде этого:

 $(".navigation a").click(function(e){ e.preventDefault(); });
$(".subitem a").click(function(){ return true; });
  

Но это не сработало.

Есть идеи, как я могу отключить «ОТКЛЮЧИТЬ ЭТУ ССЫЛКУ» и сохранить другие включенными без изменения HTML?

Ответ №1:

Вы можете добиться этого, изменив селектор.

(«.navigation a») выберет все теги ‘a’ в классе .navigation, если вы измените это на («.navigation > a»), будут выбраны только прямые дочерние элементы ‘a’.

Ответ №2:

Вы можете проверить, имеет ли ссылка, на которую нажимается родительский элемент с class=".submenu" , если это так, то оператор примет значение true, и все будет работать в обычном режиме. Если это не chil of .submenu , тогда вы вызываете e.preventDefault() , чтобы он ничего не делал по щелчку.

 $(".navigation a").click(function(e){
    if ($(this).parent().parent('.submenu')) {
        return true;
    }
    else {
       e.preventDefault();
    }
});
  

Ответ №3:

Вы можете просто выбрать прямых дочерних элементов вашего навигационного DIV.

 $(".navigation").children('a').click(function(e){ 
    e.preventDefault();
});
  

http://jsfiddle.net/8QuWj/3/