0

div内にテキストエリアがあります。オーバーレイをクリックできるようにしたい。しかし、何が起こるかというと、textarea が div だけでなくクリックもキャッチします。

<div id="d" name="d"><textarea id="ta" name="ta">my text</textarea></div>

<script type="text/javascript">
$('#d').click(function(){alert("clicked on div");)};
$('#ta').click(function(){alert("clicked on textarea");)};
</script>

テキストエリアではなく、divアラートを発生させたいだけです。

4

1 に答える 1

2

JavaScript エラーを防ぐために、最初に最後に括弧の順序を変更します。

$('#d').click(function(){alert("clicked on div");});
$('#ta').click(function(){alert("clicked on textarea");});

次に、両方のアラートを受け取ります。この例を参照してください。

===更新===

イベントは、上部の dom 要素から最下部にバブルします (バブルを防止しない場合)。したがって、 の後にイベントのバブリングを停止することはできますが、textareaではなく で発生することを防ぐことはできませdivtextarea。HTML 要素 (divtextarea)の順序を変更してから、クリック ハンドラーreturn false;の最後に を追加するか、 を追加する必要があります。私の更新された例または次の例も参照してください。divevent.stopPropagation();

于 2012-04-19T05:24:39.150 に答える