3

私はそのようにアコーディオンのセットアップをしています:

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

クリックを.headlinedivにのみ登録し、内部のリンクには登録しないようにします。リンクをクリックすると、記事ページに移動します。

   <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;  });

これによりリンクは機能しますが、ユーザーは新しいタブ/ウィンドウでリンクを開くことができません。

ありがとう!

4

2 に答える 2

12

試す

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

クリック関数には「イベント」オブジェクトが渡されます。イベントオブジェクトの「stopPropagation」メソッドを呼び出すことにより、バブリングを防ぐことができます。

于 2009-07-16T05:06:17.347 に答える
0

私は私のために働いたこの代替構文に出くわしました。

$("a").bind("click", function(e) {e.stopPropagation();});
于 2016-11-07T16:15:07.883 に答える