0

<a>親divがクリックされたときにタグのクリックをトリガーするためにjqueryを使用しようとしています

この構造のために

<div id="menu_container">

                <ul id="header_links_container">


                    <li class="header_link header_link_large border_box_1">
                        <a class="header_link" href="http://amazon.com">LINK 1</a>
                    </li>

                    <li class="header_link border_box_1">
                        <a class="header_link" href="http://google.com">LINK 2</a>
                    </li>


                    <div class="tbc"></div>

                </ul>

            </div>

これを使って

$('#menu_container').on('click', 'li.header_link', function(){
    console.log($(this));
    $(this).children('a.header_link').click();  
});

クリック数が無限に発生します。<a>タグでclick()をトリガーすると、その親divもクリックを受け取り、すべてを再度実行するためだと思います。

親divがクリックされたときにアンカーのクリックをシミュレートするにはどうすればよいですか?このSO投稿からの回答を使用しようとしても機能しません。

jsbinの例

ありがとうございました

4

2 に答える 2

2

その特定のソースに移動できるように、アンカーのクリック イベントをトリガーすることはできません

期待どおりに機能させるには、明示的にクリックする必要があります。

あなたが試すことができる最良のオプションは、使用することですwindow.location

これを試して

$('#menu_container').on('click', 'li.header_link', function(e){
   console.log('clicked');
   var loc = $(this).find("a.header_link").attr('href');
   window.location = loc;
});

jsBinリダイレクトを停止しようとするため、これは機能しません。ローカル マシンで試す</p>

于 2012-12-13T23:14:29.733 に答える
2

jQuery の代わりにElements のクリック メソッドを使用できます。

$('#menu_container').on('click', 'li.header_link', function(){
   console.log('clicked');
   $(this).find("a.header_link").get(0).click();
});

また、@Sushanth --が示唆するように、コンピューターで試してみてください。

于 2012-12-14T00:30:03.117 に答える