#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();
});