Rozwijane menu w jquery - problem w IE


(Aglasek) #1

Witam,

Mam problem z przeglądarką IE i rozwijanym menu które tworzę. Oto kod:

var pageParents = [$pageParents];


		$('#menu3,#menu4').find('li').has('ul').each(function(){

			var id = parseInt($('a:first',this).attr('rel'));

			var sign = '-';


			if (pageParents.indexOf(id) < 0) { // IE zwraca błąd w tej lini: Obiekt nie obsługuje tej właściwości lub metody

				$('ul:first',this).hide();

				sign = '+';

			}

...[/code]

Czy nie da się tej lini w której jest komentarz zastąpić czymś innym działąjącym podobnie? Bo ona najwyraźniej zwraca błąd.


(Grzelix) #2

Po pobierznym przeglądzie problemu nasuwa mi się tak myśl:

funkcja indexOf() jako parametru potrzebuje stringa Ty natomiast podajesz integera,

Być może ie nie robi niejawnej konwersji i wyrzuca błąd twierdząc że nie posiada funkcji indexOf która jako parametr pobiera integera.

Spróbuj dokonać jawnej konwersji tej zmniennej na stringa i sprawdź jak wtedy zachowa się ie


(Damgora) #3

bzdura... problem polega na tym, że ta metoda została wprowadzona wraz z javascript 1.6 i niektóre starsze przeglądarki jej nie znają.

boleq , rozwiązań jest co najmniej kilka:

  • [*:3tumqpx0]skoro używasz jQuery to alternatywą jest
    jQuery.inArray()[*:3tumqpx0]dopisanie tej metody np. w ten sposób[*:3tumqpx0]można też zwyczajnie porównywać poszukiwaną wartość z elementami tablicy w pętli iteracyjnej (dwa pierwsze sposoby w praktyce robią to samo)

(Aglasek) #4

skorzystałem z pierwszego sposobu Pana: cayman3_11 i działa. Wszystkim thx :slight_smile: