我有一个页面,它有$(document).ready()方法。 在该方法中,还有一个div正在加载另一个页面,该页面也有$(document).ready()方法,在该方法中,它向元素添加了一个click事件监听器。 但它说没有元素存在。 任何人都可以帮忙吗??
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>
答案 0 :(得分: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,则已经有几个答案。
答案 1 :(得分:0)
如果它们位于页面源内或在外部Javascript文件中链接,则只能有多个$(document.ready)
个调用。
还有一个div正在加载另一个页面,该页面也有$(document).ready()
浏览器不执行ajax响应中包含的任何Javascript,这就是为什么没有调用$(document).ready
。
jQuery为您的ajax调用提供success
个事件,因此您可以添加在调用成功时要执行的任何代码。
答案 2 :(得分:0)
我不确定我是否得到了它,但我认为你正试图达到非现有元素。如果确实如此,只需使用jquery中的live()。尽量不要使用eventlistener - 低于8的IE不喜欢它。
编辑:或者尝试使用jquery $ getScript()