2012-04-07 24 views
0

Ich habe die Frage, warum diese Arbeit in IE 8jQuery IE 8 zeigen/verstecken funktioniert nicht

$(function() { 
    $('.title .hide').showContent(); 
}); 

$.fn.showContent = function() { 
    return this.each(function() { 
     var box = $(this); 
     var content = $(this).parent().next('.content'); 

     box.toggle(function() { 
      content.slideUp(500); 
      $(this).css('background-position', 'right bottom'); 
     }, function() { 
      content.slideDown(500); 
      $(this).css('background-position', 'right top'); 
     }); 

    }); 
}; 

Und das funktioniert nicht?

$(function() { 
    $('.title .hide.show').hideContent(); 
}); 

$.fn.hideContent = function() { 
    return this.each(function() { 
     var box = $(this); 
     var content = $(this).parent().next('.content'); 

     box.toggle(function() { 
      content.slideDown(500); 
      $(this).css('background-position', 'right top'); 
     }, function() { 
      content.slideUp(500); 
      $(this).css('background-position', 'right bottom'); 
     }); 

    }); 
}; 

ich die beiden Optionen arbeiten wollen, aber ich weiß nicht, warum die zweite in IE funktioniert nicht 8, ich hoffe somewone mir helfen kann.

+0

Ist es möglich, dass die beiden Funktionen miteinander stören? Sie nennen 'showContent()' für alle Elemente, die Sie 'hideContent()' nennen, was passiert, wenn Sie die Elemente mit eindeutigen Klassen identifizieren? –

+0

Nein ich habe und und ändere die js in .title .hide und .title .show aber immer noch kein Glück ... – Maanstraat

+0

Kannst du ein [ jsFiddle] (http://jsfiddle.net) Demonstration des Problems? –

Antwort

1


JQuery in Funktionen wie verstecken gebaut hat() und show().
Probieren Sie sie aus.
Beispiel: $('input#id').hide();
Auch die Verwendung von Klassenselektoren ist keine gute Idee, da die Leistung beeinträchtigt wird.
versuchen Sie es mit IDs.

-1

Es sieht so aus, als ob Sie hideContent() nur für ein Element mit einer Klasse von show aufrufen, die sich in einer Klasse von hide befindet, die in einer Klasse von Titel ist. .hide.show sind zwei verschiedene Klassen, die verschachtelt sind.

.title .Hide .show

jQuery ist in einem .title

für ein Element mit .show in einem .Hide suchen Wenn Sie die zweite Zeile von hideContent Makeln als replace() mit:

$('.title .show').hideContent(); 
$('.title .hide').hideContent(); 
+0

Ahh oke, damit dies nicht funktioniert: um ein Element auszublenden? – Maanstraat

+0

Das ist nicht korrekt. Der jQuery-Selektor sucht nach einem Element mit den Klassen 'show' und' hide', die sich innerhalb eines Elements mit der Klasse 'title' befinden. –

+0

Ich habe es geändert, aber es funktioniert immer noch in IE 8 ... Das Anzeigen und Ausblenden funktioniert, aber das Verbergen und Anzeigen funktioniert nicht. – Maanstraat

0

wenn Sie jquery verwenden dann unter Javascript verwenden, es für Sie

jQuery(this).hide(); 
jQuery(this).show(); 
0

nützlich sein könnte, ich denke, es einen Fehler in IE8/jQ ist. Versuch:

$(id_to_hide).css("display", "none"); 
$(id_to_show).css("display", "inline-block"); 
Verwandte Themen