首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery 'if .change()或.keyup()‘

jQuery 'if .change()或.keyup()‘
EN

Stack Overflow用户
提问于 2011-10-14 00:29:19
回答 8查看 175.9K关注 0票数 86

使用jQuery时,我希望在引发.change().keyup()时运行函数。

就像这样。

代码语言:javascript
复制
if ( jQuery(':input').change() || jQuery(':input').keyup() )
{
    alert( 'something happened!' );
}

编辑

对不起,我忘了提了。.change().keyup()都需要一些变量才能在作用域内。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-10-14 00:31:32

您可以通过用空格分隔事件来绑定到多个事件:

代码语言:javascript
复制
$(":input").on("keyup change", function(e) {
    // do stuff!
})

docs here

希望这能有所帮助。干杯!

票数 210
EN

Stack Overflow用户

发布于 2013-09-25 04:15:34

如果您曾经通过AJAX动态生成页面内容或加载内容,下面的示例确实是您应该使用的方法:

  1. 它可以在多次加载脚本的情况下防止双重绑定。
  2. 绑定依赖于文档的body,因此无论添加、移动、删除和重新添加哪些元素,与指定选择器匹配的body的所有后代都将保留正确的绑定。

代码:

代码语言:javascript
复制
// Define the element we wish to bind to.
var bind_to = ':input';

// Prevent double-binding.
$(document.body).off('change', bind_to);

// Bind the event to all body descendants matching the "bind_to" selector.
$(document.body).on('change keyup', bind_to, function(event) {
    alert('something happened!');
});

请注意!我之所以使用$.on()$.off()而不是其他方法,有几个原因:

  1. $.live()$.die()已被弃用,并在较新版本的jQuery中被省略。
  2. 我要么需要定义一个单独的函数(因此弄乱了全局作用域),并将该函数分别传递给$.change()$.keyup(),要么将相同的函数声明传递给每个调用的函数;复制逻辑...这是绝对的,unacceptable.
  3. If元素曾经被添加到DOM中,$.bind()在创建元素时不会动态绑定到元素。因此,如果绑定到:input,然后将输入添加到DOM,则该绑定方法不会附加到新输入。然后,您需要显式地解除绑定,然后重新绑定到DOM中的所有元素(否则,您最终会得到重复的绑定)。每次将输入添加到DOM时,都需要重复此过程。
票数 24
EN

Stack Overflow用户

发布于 2011-10-14 00:30:48

这样做。

代码语言:javascript
复制
$(function(){
    var myFunction = function()
    {
        alert("myFunction called");
    }

    jQuery(':input').change(myFunction).keyup(myFunction);
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7757293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档