Javascript 使用jQ 1.8.3对文本框进行的jquery on()更改不起作用

Javascript 使用jQ 1.8.3对文本框进行的jquery on()更改不起作用,javascript,jquery,Javascript,Jquery,我正在使用jQuery1.8.3,因此试图从使用.live改为.on 像许多其他人一样,我不能让它工作,我做错了什么?如果它是如此错误的使用。生活 为什么它一直工作得这么好 txtbxhost是一个文本框,它不是动态添加的,它已经存在于DOM中 $('#txtbxhost').live('input', function() { // works everytime }); $('#txtbxhost').on('change', 'input', functi

我正在使用jQuery1.8.3,因此试图从使用.live改为.on 像许多其他人一样,我不能让它工作,我做错了什么?如果它是如此错误的使用。生活 为什么它一直工作得这么好

txtbxhost是一个文本框,它不是动态添加的,它已经存在于DOM中

$('#txtbxhost').live('input', function() {
  // works everytime            
});


$('#txtbxhost').on('change', 'input',  function() {
   // fails everytime           
});

我这里没有主意了。。。帮助…

您可能需要:

$(document).on('input', '#txtbxhost',  function() {
   // code here           
});
此外,更改仅在模糊时有效-换句话说,在更改文本框中的文本后单击其他位置

所以,这也应该有效

$(document).on('change', '#txtbxhost',  function() {
   // fails everytime           
});
检查您可能需要的

$(document).on('input', '#txtbxhost',  function() {
   // code here           
});
此外,更改仅在模糊时有效-换句话说,在更改文本框中的文本后单击其他位置

所以,这也应该有效

$(document).on('change', '#txtbxhost',  function() {
   // fails everytime           
});
检查

应该这样做

在您的情况下,您实际上不需要使用.on,它的主要目的是处理动态创建的元素

应该这样做


在您的情况下,您实际上不需要使用。on,它的主要目的是处理动态创建的元素。

您需要了解on在行为上的差异

有两种主要的方法来使用on。如果你感兴趣的元素存在于页面上的负载,你可以考虑直接绑定这样的事件:

$('#txtbxhost').on('input', function () {
    // some function
});
$('#some_static_ancestor').on('input', '#txtbxhost', function () {
    // some function
});
这与变革的方式大致相同

如果元素在页面加载时可能不存在,则需要处理委托事件。为此,必须将on附加到页面加载时确实存在的元素。这可以是文档,或者通常是与页面加载中存在的您感兴趣的元素最近的祖先。此委托的工作方式是查看DOM元素堆栈中冒泡到绑定到的元素的事件,然后在该元素中查找要应用回调的选择器。这看起来像这样:

$('#txtbxhost').on('input', function () {
    // some function
});
$('#some_static_ancestor').on('input', '#txtbxhost', function () {
    // some function
});

你需要了解生活中的行为差异

有两种主要的方法来使用on。如果你感兴趣的元素存在于页面上的负载,你可以考虑直接绑定这样的事件:

$('#txtbxhost').on('input', function () {
    // some function
});
$('#some_static_ancestor').on('input', '#txtbxhost', function () {
    // some function
});
这与变革的方式大致相同

如果元素在页面加载时可能不存在,则需要处理委托事件。为此,必须将on附加到页面加载时确实存在的元素。这可以是文档,或者通常是与页面加载中存在的您感兴趣的元素最近的祖先。此委托的工作方式是查看DOM元素堆栈中冒泡到绑定到的元素的事件,然后在该元素中查找要应用回调的选择器。这看起来像这样:

$('#txtbxhost').on('input', function () {
    // some function
});
$('#some_static_ancestor').on('input', '#txtbxhost', function () {
    // some function
});

txtbxhost是实际输入吗?为什么要使用。如果元素已经存在,则使用live?Mike Brant是的,它是输入-@Felix Kling我正在迁移脚本,正如我所知。live不适合使用,因此移动到。如果动态添加元素,则只需要事件委派。但是你说元素已经存在了。因此,您不必使用事件委派并尝试将.live版本转换为等效的.on版本。只需使用.on将处理程序直接绑定到元素。文档中有很多信息和示例:。txtbxhost是实际输入吗?为什么要使用。如果元素已经存在,则使用live?Mike Brant是的,它是输入-@Felix Kling正在迁移脚本,因为它是编写的。live不适合使用,因此移动到。如果添加元素,则只需要事件委派动态地。但是你说元素已经存在了。因此,您不必使用事件委派并尝试将.live版本转换为等效的.on版本。只需使用.on将处理程序直接绑定到元素。文档中有很多信息和示例:。他说它不是动态添加的。注意到了这一点,因此删除了我的评论。在您的情况下,您实际上不需要使用。在上,它的主要目的是处理动态创建的元素。实际上,no..on统一了以前主要存在的所有不同的事件绑定方法。live/.delegate和.bind。它同样用于普通事件绑定和事件委托。每个事件绑定方法都在内部调用.on。他说它不是动态添加的。注意到了这一点,因此删除了我的注释。在您的情况下,您实际上不需要使用。在上,它的主要目的是处理动态创建的元素。实际上,no..on统一了以前主要存在的所有不同的事件绑定方法。live/.delegate和.bind。它同样用于普通事件绑定和事件委托。每个事件绑定方法都在内部调用.on.works,非常好!!第一个代码示例更好,因为它必须在焦点位于输入框时工作-非常感谢appreciated@user962902:因此,您在上次尝试中基本上已经获得了它,但使用更改而不是输入。你为什么要改变这个事件?@FelixKling
-我上一次的尝试没有成功——正如karthikr所说——它只在焦点离开主题时对模糊起作用——如果我理解你问我的问题,那么问题在于我对论点和顺序的了解。on@user962902:不,我只是想知道为什么使用更改而不是输入,因为您在.live代码中使用输入。您已拥有正确的.on call,但更改了事件名称。考虑到这一点,使用输入似乎是显而易见的。无论如何,您现在有了一个有效的解决方案:我想在这个解决方案中指出的一件事是,通常最好使用与您要对其运行回调的元素最近的祖先,该元素存在于页面加载而不是文档中。非常好!!第一个代码示例更好,因为它必须在焦点位于输入框时工作-非常感谢appreciated@user962902:因此,您在上次尝试中基本上已经获得了它,但使用更改而不是输入。你为什么要改变这个事件?@FelixKling-我上一次的尝试没有成功-正如karthikr所说的-它只在焦点离开主题时对模糊起作用-如果我理解你问我的问题,那么问题是我对论点和顺序的了解。on@user962902:不,我只是想知道为什么用change代替input,因为您在.live代码中使用了输入。您已拥有正确的.on call,但更改了事件名称。考虑到这一点,使用输入似乎是显而易见的。不管怎么说,你现在有了一个有效的解决方案:在这个解决方案中,我要注意的一点是,通常最好使用与你想要运行回调的元素最接近的祖先,而不是使用文档。我现在开始处理这个差异了——这要感谢你们的brill反馈。我想我用的是。生活就像一个包罗万象的东西,不管发生什么,它似乎都能继续工作。你的解释刚刚澄清了这一点——干杯,我现在正在努力解决这个问题——多亏了你们的反馈。我想我用的是。生活就像一个包罗万象的东西,不管发生什么,它似乎都能继续工作。你的解释刚刚澄清了这一点——干杯