16

との違いを誰か説明できますevent.preventDefault()event.stopPropagation()?

テーブルがあり、そのテーブル内に img タグがあります。

img タグをクリックすると、ポップアップが表示されます。

ただし、複数行の選択も停止したいので、次を使用します。

$("table.items tbody tr").click(function(event) {
        event.stopPropagation();
    });

js コードを使用すると、ポップアップが表示されません。

js コードを削除すると、ポップアップが機能します。

$(".info").live("click",function(e){
    //console.log('ok');
    e.stopPropagation();
    var elem = $(this);
    var id = $(this).attr("id").replace("image_","container_");
    $('#'+id).toggle(100, function() {
        if($(this).css('display') == 'block') {
            $.ajax({
                url: "$url",
                data: { document_id:elem.attr('document_id') },
                success: function (data) {
                    $('#'+id).html(data);
                }
            });
            }
        });
});

なんで?

4

3 に答える 3

39

私は Javascript の専門家ではありませんが、私の知る限り:

stopPropagationイベントがチェーンをバブルアップしないようにするために使用されます。例えば。タグをクリックすると、その親で<td>もクリックイベントが発生し<tr>、その親<table>などstopPropagationがこれを防ぎます。

preventDefault要素の通常の動作を停止するために使用されます。preventDefaultリンク上のクリック ハンドラーでは、リンクの追跡が停止されます。送信ボタンでは、フォームの送信が停止されます。

于 2013-08-09T13:03:27.143 に答える
7

W3C からのイベント:preventDefault

event.preventDefault() メソッドは、要素のデフォルト アクションの発生を停止します。例えば:

送信ボタンがフォームを送信できないようにする リンクが URL をたどらないようにする

stopPropagationW3C からのイベント:

event.stopPropagation() メソッドは、親要素へのイベントのバブリングを停止し、親イベント ハンドラーが実行されないようにします。

于 2013-08-09T13:09:33.657 に答える