Как я могу применить jQuery.click только к элементам первого уровня?
Мне нужно применить jQuery.click только к элементам первого уровня. Как я могу это сделать?
Вот мой список:
<a href="">Item 1</a>
Item 2
Sub Item 1
Sub Item 2
Sub Item 3
Item 3
Sub Item 4
Sub Item 5
А вот и JQuery
jQuery('#adminMenu > li').click(function(){
alert('test');
});
ОБНОВИТЬ
Оповещение должноне срабатывает, когда я щелкаю по элементу подменю, только когда я щелкаю по элементу списка A, B или C.
РЕШЕНИЕ 1
Это рабочий код, основанный на предложении Марселя.
jQuery('#adminMenu > li > h3').click(function(e) {
var activeUL = jQuery("#adminMenu > li ul:visible");
var activeLI = jQuery("#adminMenu > li ul:visible").parent('li:first');
var clicked = jQuery(this).parent('li:first');
// Close submenu
activeUL.hide('fast');
// Open submenu
if( activeLI.attr('id') != clicked.attr('id') )
clicked.children('ul').show('fast');
});
РЕШЕНИЕ 2
Это рабочий код, основанный на предложении век.
jQuery('#adminMenu > li').click(function(e) {
var clicked = jQuery(e.target);
// Ensure we're checking which list item is clicked,
// other children should be allowed
if(!clicked.is('li') && clicked.parents('li').length > 0) {
// :first ensures we do not select higher level list items
clicked = clicked.parents('li:first');
}
// If clicked list item is a child of another list item, we'll exit here
if(!clicked.is('#adminMenu > li')) {
return;
}
var activeUL = jQuery("#adminMenu > li ul:visible");
var activeLI = jQuery("#adminMenu > li ul:visible").parent('li:first');
// Close submenu
activeUL.hide('fast');
// Open submenu
if( activeLI.attr('id') != clicked.attr('id') )
clicked.children('ul').show('fast');
});
Спасибо, парни! Я бы никогда не справился с этим без вашей помощи! :)