JQuery аккордеон предотвратить пузыри / разрешить действие ссылки по умолчанию - PullRequest
3 голосов
/ 16 июля 2009

У меня есть настройки гармошки как:

 $('.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(); } });

Я хочу, чтобы клик регистрировался только на .headline div, а не по ссылке внутри. Ссылка должна перейти на страницу статьи.

   <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>

Есть ли способ предотвратить всплывание событий, чтобы аккордеон срабатывал только при нажатии на div? Или есть способ разрешить действие ссылки по умолчанию для продолжения?

Я пробовал:

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

Что делает функцию ссылки, но не позволяет пользователю открыть ссылку в новой вкладке / окне.

Спасибо!

Ответы [ 2 ]

12 голосов
/ 16 июля 2009

Попробуйте

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

Функция щелчка передает объект 'событие'. Вызвав метод stopPropagation объекта события, вы можете предотвратить образование пузырьков.

0 голосов
/ 07 ноября 2016

Я сталкивался с этим альтернативным синтаксисом, который работал для меня;

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