1

私はいくつかの投稿を閲覧してきましたが、どれもまだ役に立っていません。

私はいくつかの派手なボタンを次のように設定しています:

<div class='orange-btn'>
<a href="url.html">BLah blah</a>
<span>Meta text</span>
</div>

<span>アンカーにキックしてclick()関数を発生させるには、div (または任意の子、つまり ) でクリック イベントが必要です。

今のところ、「最大コールスタックサイズを超えました」というエラー、または<errorブラウザータブが完全にクラッシュする前に単に言うエラーが表示されます。

ご協力ありがとうございます。

4

3 に答える 3

1

これは、イベント バブリングが原因です。リンクをクリックすると、そのクリックが div まで伝播し、リンクのクリックが無限にトリガーされます

これを解決するには、次を追加します。

$('a').on('click',function(e) {
   e.stopPropagation();
});

($(document).on('click','a',function(e) {...});リンクが動的に追加される場合に使用します。)

于 2013-01-18T19:23:39.547 に答える
0

そもそもなぜdivが必要なのですか?次のようなことをしてみませんか:

<a href="url.html" class="orange-button">
  <span class="label">Bla Bla</span>
  <span class="meta">Meta data</span>
</a>

.orange-button をブロックとして表示するように設定すると、まったく同じ効果が得られます。このようなもの:

.orange-button {
  display: block;
  /* the other styles that where on your div */
}
.orange-button .label {
  /* the styles that where on your a */
}
.orange-button .meta {
  /* the styles that where on your span */
}

私は、本当に必要でない限り、js を使用しないことを強く信じています。js が無効になっているユーザーがまだ何人かいますが、彼らはあなたのサイトで同じ経験をするに値します...

于 2013-01-18T19:33:48.717 に答える
0

これを試して

 $('div').children().click(function (){
  alert();
 });

ここでクリックをトリガーする必要があります

于 2013-01-18T19:22:52.910 に答える