[jQuery]Zablokowanie domyślnej akcji

0

Witajcie,

mam problem z rozwijanym menu. Chodzi o to, że element z którego rozwija się lista jest ujęty jako link <a href="#" >menu 1</a> i po kliknięciu rozwija podane elementy. Problem jest tego typu, że po kliknięciu strona "wraca" na samą górę i nie wiem jak to zablokować. Jakieś porady? Próbowałem przez dodanie $(this).bind("submit", function() { return false; }) ale nie pomogło.

Tak wygląda rozwijanie menu.

function InitMenu()
{
	$('li', '#menu').hover(function(){
		$(this).addClass('sfhover');
	});
	$('li', '#menu').click(function(){
		$('ul', this).slideDown('fast');
		$(this).addClass('sfhover');
	});
	$('li', '#menu').mouseleave(function(){	
		$('ul', this).slideUp('fast');
		$(this).removeClass('sfhover');
	});
} 
0

$(this).attr("onsubmit","");
możesz również zapisać sobie poprzednią wartość i po skończeniu robienia czegośtam przywrócić ją

1

@krwq:
Nie wiem, czy czegoś nie doczytałeś, czy też programujesz przypadkowo jak autor tematu (?), ale źle mu podpowiadasz... Zupełnie nie o to chodzi. (Chyba że to ja czegoś kompletnie tu nie rozumiem :P).

@robertinho:
Czemu dajesz to w zdarzeniu submit jakiegoś elementu listy (li)? Elementy listy nie mają takiego zdarzenia -- jest ono charakterystyczne dla formularzy.

Ty tak naprawdę chcesz zablokować domyślną akcję kliknięcia w link. Bo kliknięcie w link powoduje, że przeglądarka za nim podąża. W przypadku linku z href="#" oznacza to przewinięcie strony do góry.

Dodaj do linków funkcję obsługi zdarzenia click, w której wywołasz metodę preventDefault() na obiekcie zdarzenia (zauważ, że deklaruję tutaj obiekt zdarzenia jako parametr, który nazywam sobie evt -- od event):

$('a', '#menu').click(function(evt) {
  evt.preventDefault();
});

1 użytkowników online, w tym zalogowanych: 0, gości: 1