2

$(document).ready特定の要素のリスナーを設定する関数があります。ただし、すべての#leave-ride要素が動的に追加されます。

リスナー:

$(document).ready(function() {
    $("#post-ride").click(function() {
        addRide(currentDriver, $(destinationInput).val(), $(originInput).val(), $(dateInput).val(), $(timeInput).val());
        $.getScript("scripts/myRides.js", function() {});
    });

    $("#request-ride").click(function() {
        requestRide(currentDriver, $(destinationInput).val(), $(originInput).val(), $(dateInput).val(), $(timeInput).val());
        $.getScript("scripts/myRides.js", function() {});
    });

    $("#leave-ride").click(function() {
        console.log("leave Ride");
        leaveRide(currentDriver, $("leave-ride").closest("div").attr("id"));
        $.getScript("scripts/myRides.js", function() {});
    });
});

そのリスナーが動的コンテンツをリッスンするようにするには、どうすればよいですか?

4

3 に答える 3

10

はい、ready一度だけ実行します。イベント委任を使用できます。

#leave-ride動的にロードされない (document極端な場合)に最も近い要素を取得します。次に、ハンドラーをアタッチし、委任されたイベント#leave-rideのセレクターとして使用します。

id を持つ div#containerがその静的要素であると仮定します。

$('div#container').on('click', '#leave-ride', function(){…});

動的に作成された要素のイベント バインディングも参照してください。

于 2012-12-03T22:39:23.770 に答える
3

を使用onし、イベント宣言を変更します

$("#post-ride").click(function() {

$("body").on('click',"#post-ride",(function() {
于 2012-12-03T22:33:38.530 に答える
0

使用する.on()

例:

$("#leave-ride").on('click', function() {
   console.log("leave Ride");
   leaveRide(currentDriver, $("leave-ride").closest("div").attr("id"));
   $.getScript("scripts/myRides.js", function() {
    });
});
于 2012-12-03T22:33:23.680 に答える