jQuery: preventDefault только для родительской ссылки
Решение:
Нашел решение.
Используемый parentNode:
$('.skaftetopmenu-li > a').click(function(e) {
e.preventDefault();
var subid = $(this.parentNode).attr('id');
if (subid !="forsidemenu"){
var str = $('#submenu-content-'+subid).html();
if ($.trim(str) == ""){
$('.submenu-content', this.parentNode).load('http://' + skafte.base_url + '/inc/top-menu-subs/'+subid+'_submenu.html');
}
}
});
У меня есть такое меню:
<ul>
<li class="parent">
<a href="url">Link title parent</a>
<ul>
<li><a href="url">Link title child</a></li>
</ul>
</li>
</ul>
Я попробовал следующее в jQuery:
$('.parent').click(function(e) {
e.preventDefault();
});
Однако это отключает все элементы во всей структуре меню. Я хочу отключить только родительские ссылки. Те, что в "ul li", а не ссылки в "ul ul li", но я не могу понять, как, и я искал и искал. Так что, пожалуйста, помогите мне!
EDIT: Спасибо за ответы. Я думал, что упрощу свой код в вопросе, но это на самом деле не принесло мне пользы. Итак, вот фактический код, который я использую:
$('.skaftetopmenu-li').click(function(e) {
var subid = $(this).attr('id');
if (subid !="forsidemenu"){
var str = $('#submenu-content-'+subid).html();
if ($.trim(str) == ""){
$('.submenu-content', this).load('http://' + skafte.base_url + '/inc/top-menu-subs/'+subid+'_submenu.html');
}
}
});
И HTML:
<li class="skaftetopmenu-li" id="priser">
<a href="http://<?php echo DOMAIN?>/priser.php">Priser & Sortiment</a>
<div class="submenu-content" id="submenu-content-priser"></div>
</li>
Если я попытаюсь сделать, как вы предлагаете, и установить его в:
$('.skaftetopmenu-li > a').click(function(e) {
e.preventDefault();
Это не работает..
3 ответа:
Похоже на ответ Остина Маллинса, я думаю, что вы хотите этого:
$('li.parent > a').click(function(e) { e.preventDefault(); });
Попробуйте это:
$(".parent > ul > li > a").click( function(e) { e.preventDefault(); // ... });
>
соответствует только непосредственным дочерним элементам предыдущего тега.