相关疑难解决方法(0)

这段代码是否需要在document.ready中?

document.ready使用DOM完全加载后执行代码.这可以用于将事件处理程序附加到页面上的元素,例如

$(function(){ 
    $('#somediv').click(function(){ 

    }); 
}) 

<div id="somediv"> </div> 
Run Code Online (Sandbox Code Playgroud)

在内部,jQuery挂钩DOMContentLoadedwindow.onload作为后备.在IE的情况下,尝试一遍又一遍地滚动视口直到成功.

我有几个问题,我的第一个问题是,当将事件处理程序绑定到document自身时,是否有必要将该代码放入document.ready?我一直在编写下面的代码,而不是将它包装在一个document.ready

$(document).keydown(function(e){
    if (e.which == 39) { 
       alert( "right arrow pressed" );
       return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它有效.我的理解是,由于此代码不会连接到文档中的任何元素,而是文档本身,因此无需将其包装在document.ready处理程序中.我不包装它的另一个原因是因为我曾经在vanilla javascript中做同样的事情,相当于下面的代码,这也有效.

document.onkeydown = function(){
var keyCode = event.keyCode || event.which;   
    if (keyCode == 39) { 
       alert( "right arrow pressed" );
       return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经看过很多人将它包装成一个帖子document.ready,有没有不包装这些代码的缺点document.ready

此外,我认为这个问题源于我在构建DOM时发生的事情缺乏清晰度,所以如果有人能够解释在DOM准备好之前的那段时间发生的事情.对于我来说,当html被解析并转换为DOM树时,文档已准备就绪,还是有更多内容?

总之,这是我的问题

  1. 将事件处理程序绑定到 …

javascript jquery

32
推荐指数
3
解决办法
2169
查看次数

如何在通过Ajax引入的元素上使用Jquery document.on()?

我有一个Jquery Mobile shell页面,我正在使用Ajax加载表单.表单有一些复选框,我需要绑定到它.

奇怪的是,我可以让它直接在按钮上设置监听器,如下所示:

$('input[name="ohneiln"]').on('change', function() {
   alert("hello");
   });
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将侦听器设置为$(document)并委托给checkbox侦听器时,侦听器永远不会触发:

$(document).on('change', 'input[name="ohneiln"]', function() {
   alert("hello");
});
Run Code Online (Sandbox Code Playgroud)

问题:
为通过Ajax加载的"动态"元素设置事件绑定的正确方法是什么$(document).on()?这对change事件不可能或为什么我遇到麻烦?

感谢帮助!

jquery jquery-mobile

12
推荐指数
1
解决办法
3万
查看次数

标签 统计

jquery ×2

javascript ×1

jquery-mobile ×1