1

ストリームを再生するサイトがあります。人がボタンを押すと、サーバーへの AJAX 呼び出しを実行します。

<input type="submit" class="play" data-type="<?php echo $result_cameras[$i]["camera_type"]; ?>" data-hash="<?php echo $result_cameras[$i]["camera_hash"]; ?>" value="<?php echo $result_cameras[$i]["camera_name"]; ?>">

これにより、ユーザーが選択できる一連のボタンが出力されます。これは、次のコードによって処理されます。

<script>
$(document).ready(function(){

$(".play").on('click', function(){
    var camerahash = $(this).data('hash');
    var cameratype = $(this).data('type');
    function doAjax(){
        $.ajax({
            url: 'index.php?option=streaming&task=playstream&id_hash=<?php echo $id_hash; ?>&camera_hash='+camerahash+'&format=raw',
            success: function(data) {
                if (data == 'Initializing...please wait')
                {
                    $('#quote p').html(data); //shows a message here
                    setTimeout(doAjax, 2000);
                }
                else
                {
                    if (cameratype == "WEBCAM" && data == 'Stream is ready...')
                    {
                        $('#quote p').html(data); //another message here
                        window.location = 'rtsp://<?php echo DEVSTREAMWEB; ?>/<?php echo $session_id;?>/'+camerahash;
                    }
                    else if (cameratype == "AXIS" && data == 'Stream is ready...')
                    {
                        $('#quote p').html(data); //another message here
                        window.location = 'rtsp://<?php echo DEVSTREAMIP; ?>/<?php echo $session_id;?>/'+camerahash;
                    }
                    else
                    {
                        $('#quote p').html(data); //another message here
                    }

                }

            }
        });

    }
    doAjax();
});
});
</script>

ユーザーがボタンをクリックするとメッセージが表示されるため、すべてが機能します。しかし、別のボタンをクリックしてもメッセージは表示されません。.on動的にロードされるボタン ( の代わりに)にデリゲート イベント ( ) を使用しました.click()

4

3 に答える 3

2

以下を使用してみてください。

$(document).on("click", ".play", function() {
    // Data
}
于 2012-09-17T14:16:14.473 に答える
2

まず、 内でセレクターを指定する必要があります.on。あなたの場合、親/先祖がいない場合は、指定できますdocument

 $(document).on('click', '.play', function(){....
于 2012-09-17T14:16:19.177 に答える
2

親要素にバインドし、ボタンにデリゲートします。

たとえば、これをバインドすると TR が存在しない可能性があるため、テーブルにバインドし、「tr」にバインドします。

$("#dataTable").on("click", "tr", function(event){ alert($(this).text()); });

CanJS ( canjs.us ) をチェックアウトする必要があります。このタイプの自動バインダーがあります。

于 2012-09-17T14:17:28.047 に答える