0

私は次のマークアップを持っています:

<div id="basket-btn">
<button class="buyout" type="button"><span>Text</span></button>
</div>

および2クリックハンドラー:

$('#basket-btn').click(function(){
alert(1);
})

$('.buyout').click(function(){
alert(2);
})

divまたはボタンをクリックすると、最初のクリックハンドラーのみが発生するという問題があります。それを解決する方法は?
ありがとう。

更新
スライドパネルの最初のクリックで、上下に移動します。このスライドパネルの2番目のボタン。

4

2 に答える 2

2

期待する出力はわかりませんが、クリック時に両方のアラートが必要な場合は、これでうまくいくようです。

<script type="text/javascript">
 $(document).ready(function(){
      $('#basket-btn').click(function(){
           alert(1);
      })

      $('.buyout').click(function(){
           alert(2);
      })
 });
</script>

または、子ボタン「.-buyout」がまだクリックされているかどうか、またはdata()を使用していないかどうかを確認できる関数が必要な場合があります。これにより、alert(1)またはalert(2)のいずれかのみを表示できます。次のメモ付き:

•alert(2)は、.-buyoutボタンがクリックされたときに起動します。

•div#basket-btnがクリックされ、.- buyoutがクリックされていない場合、alert(1)が起動します。

<script type="text/javascript">
        $(document).ready(function(){
            $('#basket-btn').click(function(){
             if($(this).children().data('clicked') != true) {
                // if child button has not been clicked; do this...
                alert(1);
             }
            })

            $('.buyout').click(function(){
                // if child button is clicked; do this...
                alert(2);
                $(this).data('clicked', true);
            })
        });
</script>

上記はあなたの望む効果にもっと向かっているかもしれません。

于 2012-08-15T12:35:44.667 に答える
2

2つのハンドラーが正常に機能しています。これがライブデモです。

必ず関数を内部にラップしてください

$(document).ready(function(){
//your stuff here
});

また、ボタンクリックの最初の機能を防ぎたい場合は、stopImmediatePropagation()

これが実際のライブデモです。

于 2012-08-15T13:29:10.660 に答える