Wróciłem na głowę, a żaden z rozwiązań nie wydaje się, aby ten kod działa:

$(".showSomething").live('click', function(e) {
            e.preventDefault();
            var $container = $(this).parent().parent().next("div");
            var title = $container.is(':visible') ? "Show" : "Hide" ;
            $container.slideToggle('slow');
            $(this).text(title);
        });

Gdy klikam link Show na stronie, rzeczywiście zmienia się na Hide, ale to jest. Div, który ma przełączać się, nie pokazuje, a łącze jest również blokowane w stanie Hide.

Wszelkie porady byłyby bardzo doceniane.

Edytuj To jest to, jak wygląda HTML:

<div class="something" id="asdf">
    <div class="anotherthing">
        <span class="showSomething">Info</span>
    </div>
</div>
<div class="details">
    This Should Get Shown
</div>

Aktualizacja : Myślę, że istnieje prawdziwa kwestia z IE8 na ten temat. Udało mi się uruchomić, przełączając się na następujące czynności zamiast "Slidetoggle"

var title = "";
            if( $container.is(':visible') )
            {
                title = "Show";
                $container.slideUp('slow');
            }
            else
            {
                title = "Hide";
                $container.slideDown('slow');
            }
0
Jacob 16 grudzień 2011, 18:09

3 odpowiedzi

Najlepsza odpowiedź

Problem polegał na PIE.HTC (CSS3PIE.com). Unikaj tego jak plaga, ponieważ oprócz problemu, jaki miałem powyżej, jeśli zastosujesz go do jednego zbyt wielu elementów, Twoja witryna przyjdzie do czołgania się do IE7-8 użytkowników sprawiają, że praktycznie bezużyteczne.

0
Jacob 17 grudzień 2011, 18:46

Umieściłem to skrzypce razem, wydaje się pracować: http://jsfiddle.net/markschultheiss/xdxtr/

Biorąc pod uwagę, porównaj swoją strukturę, aby zapewnić, że następny div jest podobny do przykładu.

<div id='holder'>
    <div id='clicker' class="showSomething">click me</div>
</div>
<div id='hidyho'>it is me to hide or not</div>
0
Mark Schultheiss 16 grudzień 2011, 14:22

Myślę, że jesteś parent. Próbować:

var $container = $(this).parent().parent().next("div");
0
graphicdivine 16 grudzień 2011, 14:26