0

$(document).ready()メソッドを持つページがあります。そのメソッドの中には、別のページをロードしているもう1つのdivがあり、そのページには、クリックイベントリスナーを要素に追加している$(document).ready()メソッドもあります。しかし、それは要素が存在しないと言っています。誰かがこのplsで助けることができます..?

divページにあるスクリプト:

      <script>
         $(document).ready(function() {
            console.log("Entered into the page");
            var video = document.getElementsByTagName('video')[0];
            console.log("Video id"+video);
            //P.E. style, let video@controls remain set if RS scripting not supported                
            //if(checkReadingSystemSupport()) video.removeAttribute('controls', 0);;
            video.addEventListener('click', function(e){
                    console.log("single click");
                    e.preventDefault();
                    togglePlay();
            }, false);

            video.addEventListener('dblclick', function(e){
                    console.log("Double Clicking");
                    e.preventDefault();
                    toggleControls();
            }, false);    

            video.addEventListener('keyup', function (e) {
                console.log("Key up");
                var k = e ? e.which : window.event.keyCode;
                if (k == 32) {
                    e.preventDefault();
                    togglePlay();
                }
            },false);
        });
    </script>
4

3 に答える 3

1

すでにサイトに含まれているので、jQueryを使用して、このようなことをもっと試してみます:

<script type="text/javascript">
     $(document).ready(function() {
         var video = $('video').first();
         $(document).on({
             click: function(e){
                 e.preventDefault();
                 togglePlay();
             },
             dblclick: function(e){
                e.preventDefault();
                toggleControls();
            },
            keyup: function (e) {
                if (e.which == 32) {
                    e.preventDefault();
                    togglePlay();
                }
            }
        }, video); // <-- delegated event
     });
</script>​​​​​​​​

また、質問の下のコメントに記載されているように、javascript が ajax をロードしたページにある場合、ブラウザは常に javascript を実行するとは限らないため、呼び出し元のページにも含めるか、抽出する必要があります。 ajax呼び出しの結果から、どういうわけかそれを実行します。SOを検索すると、これに対するいくつかの回答がすでにあります。

于 2012-12-17T07:40:09.493 に答える
0

$(document.ready)ページ ソース内にある場合、または外部 Javascript ファイルにリンクされている場合にのみ、複数の呼び出しを行うことができます。

別のページをロードしているもう1つのdivがあり、そのページにも $(document).ready() があります

ブラウザは、ajax 応答に含まれる Javascript を実行しないため、$(document).ready呼び出されません。

jQuery はsuccessajax 呼び出しのイベントを提供するため、呼び出しが成功したときに実行する任意のコードを追加できます。

于 2012-12-17T07:39:39.710 に答える
0

取得したかどうかはわかりませんが、存在しない要素に到達しようとしていると思います。true の場合は、jquery の live() を使用してください。eventlistener を使用しないようにしてください - 8 未満の IE はそれを好みません。

編集: または jquery $getScript() を使用してみてください

于 2012-12-17T07:40:18.260 に答える