3 Stimmen

jquery Akkordeon verhindert Blasenbildung / erlaubt Standard-Link-Aktion

Ich habe ein Akkordeon so eingerichtet:

 $('.shortheadline').accordion({ active: false, header: '.headline',  autoHeight: false, animated: 'slowslide', changestart: function(event, ui) { $('.brief').css('min-height','0') }, change: function(event, ui) {  $('.brief:visible').css('min-height','80px'); $('.headline').blur(); } });

Ich möchte, dass der Klick nur auf die .headline div registriert wird, nicht der Link darin. Der Link sollte Sie auf die Artikelseite führen.

   <div class="shortheadline"> 
        <div class="entry">
            <div class="headline">
                <div class="timestamp">11:34 AM</div>
                <div class="title"><a href="http://beta.macobserver.com/tmo/article/jeff_gamet_shares_iphone_tips_and_tricks_on_macjury/">Jeff Gamet Shares iPhone Tips and Tricks on MacJury</a></div>
            </div>
            <div class="brief">
                <div class="teaser_image"> <img src="/imgs/cache/imgs/teaser_images/20090708macjury_new-0x80.png" width="80" height="80"  id="teas_48236" alt="macJuryJeff Gamet Shares iPhone Tips and Tricks on MacJury" /></div>
                <div class="teaser"><p><em>The Mac Observer's</em> Jeff Gamet joined <em>MacJury</em> host Chuck Joiner to talk about Apple's iPhone OS 3.0, the iPhone 3GS, and to share some iPhone tips and tricks, too.</p> </div>
            </div>
        </div>
    <!-- more entries -->
    </div>

Gibt es eine Möglichkeit, Event Bubbling zu verhindern, so dass das Akkordeon nur beim Klicken auf ein Div ausgelöst wird? Oder gibt es eine Möglichkeit, die Standardaktion des Links weiterlaufen zu lassen?

Ich habe es versucht:

$("a").click(function(){ window.location=this.href;  });

Dadurch funktioniert der Link zwar, aber der Benutzer kann ihn nicht in einem neuen Tab/Fenster öffnen.

Gracias.

12voto

SolutionYogi Punkte 30824

Pruebe

$("a").click(function(event){ event.stopPropagation(); });

Der Klick-Funktion wird ein 'Event'-Objekt übergeben. Durch den Aufruf der Methode "stopPropagation" des Ereignisobjekts können Sie das Blubbern verhindern.

0voto

Edward Comeau Punkte 3534

Ich bin auf diese alternative Syntax gestoßen, die bei mir funktioniert hat;

$("a").bind("click", function(e) {e.stopPropagation();});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X