0

我有一个页面,它有 $(document).ready() 方法。在该方法中,还有一个 div 正在加载另一个页面,并且该页面也具有 $(document).ready() 方法,其中它向元素添加了单击事件侦听器。但它是说不存在任何元素。有人可以帮忙吗?

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调用的结果并以某种方式执行它。如果您搜索,那么已经有几个答案了。

于 2012-12-17T07:40:09.493 回答
0

$(document.ready)如果它们在页面源中或链接在外部 Javascript 文件中,则只能进行多个调用。

还有一个 div 正在加载另一个页面,并且该页面也有 $(document).ready()

浏览器不执行 ajax 响应中包含的任何 Javascript,这就是为什么$(document).ready不调用你的原因。

jQuerysuccess为您的 ajax 调用提供事件,因此您可以添加任何想要在调用成功时执行的代码。

于 2012-12-17T07:39:39.710 回答
0

我不确定我是否明白了,但我认为您正在尝试使用不存在的元素。如果是真的,只需使用 jquery 中的 live() 即可。尽量不要使用 eventlistener - 8 以下的 IE 不喜欢它。

编辑:或尝试使用 jquery $getScript()

于 2012-12-17T07:40:18.260 回答