0

クリックイベントがあります

$('#ship_Move').click(function (event) {                
        event.stopPropagation();
        $('.shipActionsList').remove();
        moveShip(shpID);
    });

関数 moveShip を呼び出す

function moveShip(shp_id) {
    $('.fieldDivs').click(function () {       
        $("#hello").append("Move "+ shp_id + "to " + $(this).attr('id')+"<br/>");
    });
}

デバッグは正しい結果をもたらしていますが、1 つの問題があります。最初に #ship_Move 要素を 4 回クリックし、目的地 (.fieldDivs) を選択すると、次のようになります。

162をFD455に移動

162をFD455に移動

162をFD455に移動

162をFD455に移動

moveShip 関数が 4 回呼び出され、それぞれが .fieldDivs 要素がクリックされるのを待っており、クリックされると、4 つすべてが結果を追加するためです (162 は移動したい船の ID、FD455 です)。目的地です)。

私が必要とするのは、これらの行の中の何かです:

function moveShip(shp_id) {
    $('.fieldDivs').click(function () {       
        $("#hello").append("Move "+ shp_id + "to " + $(this).attr('id')+"<br/>");
        // IF A NEW #SHIP_MOVE IS CLICKED, END THIS FUNCTION AS IT WILL BE CALLED AGAIN
    });
}

false を返して関数を中断できることはわかっていますが、クリック イベントには新しい関数が必要なので、false を返すとそのイベント内のクリック イベントが終了します。つまり、上記のコメント行 //IF A NEW SHIP を次のコードと交換すると:

 $('.ship_Move').click(function () {       
         //   return false would break this function
        });

このコードは、このクリック イベントを終了するだけで、moveShip 関数は終了しません。

私は自分自身を十分に明確にしたことを願っています...ありがとう!

4

1 に答える 1