0

document.ready外部スクリプト ファイルとファイル内の両方で同じリスナーを定義します。class で要素をクリックすると常に削除を実行したいので、中央の外部ファイルに1つ持っていますが.delete、他のこともしたい場合があります。

//script.js
$(document).ready(function(){
    $('.delete').click(function(){
        //send AJAX delete
    });
});

//index.php
<script type="text/javascript">
    $(document).ready(function(){
        $('.delete').click(function(){
            var msg = "Are you sure you want to delete the <?=$item?>'"+$(this).attr("name")+"'?";
            if ( confirm(msg) ) {
                removeDataTableRow( $(this)... );
            }//fi
        });
    });
</script>

外部jsファイルのリスナーは、ファイル内スクリプトのリスナーの前に起動しますが、反対のことが必要です(そして、外部ファイルの2番目のイベントをキャンセルしたい場合confirm=false)。

ファイル内スクリプトに変数を設定し、その変数を外部に設定して確認の結果を知ることを考えましたが、外部スクリプトのスクリプトが最初に起動するため、変数はまだ適切に定義されていません: /

編集:異なるリスナーのイベントの優先順位をカバーする質問 282245を読みましたが、同じリスナーの発生については説明しません。

4

1 に答える 1

1

Javascript の実行順序は、実際には非常に単純です。非同期コード (イベント ハンドラー、AJAX リクエスト、setTimeout など) を使用していない限り、コードは常に順番に並べられます。つまり、ブラウザーはページの先頭から開始し、最初に見つかったスクリプト タグ内のすべてを実行し、次のスクリプト タグに移動する、といった具合です。

非同期のものは問題を少し混乱させますが、一般的なルール (少なくともほとんどのライブラリでは) は、接続された最初のハンドラーが最初に実行されます。したがって、この場合、外部の document.ready ハンドラーは、ページ内のスクリプト タグよりも前に来るため、オフになります。

于 2012-07-27T21:19:26.433 に答える