jQuery'如果.change()或.keyup()'
使用jQuery我想在运行.change()
或.keyup()
时引发一个函数。
像这样的东西。
if ( jQuery(':input').change() || jQuery(':input').keyup() ) { alert( 'something happened!' ); }
编辑
对不起,我忘了提。 .change()
和.keyup()
需要一些variables在范围内。
你可以绑定到多个事件,用空格分隔它们:
$(":input").bind("keyup change", function(e) { // do stuff! })
文档在这里 。
希望有所帮助。 干杯!
如果您是通过AJAXdynamic生成页面内容或加载内容,那么下面的例子就是您应该去的方式:
- 在脚本加载多次的情况下,例如在AJAX请求中,它可以防止双重绑定。
- 该绑定位于文档
body
上,因此无论添加,移动,删除和重新添加什么元素,与指定select器匹配的body
所有后代都将保留正确的绑定。
代码:
// 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()
和$.on()
$.off()
而不是其他方法,原因如下:
-
$.live()
和$.die()
已被弃用,并且已经从更新版本的jQuery中被省略。 - 我要么需要定义一个单独的函数(因此混淆了全局范围),并分别将函数传递给
$.change()
和$.keyup()
,或者将相同的函数声明传递给每个调用的函数。 复制逻辑…这是绝对不能接受的。 - 如果将元素添加到DOM中,
$.bind()
不会在创build元素时dynamic绑定到元素。 因此,如果绑定到:input
,然后将input添加到DOM,则该绑定方法不会附加到新input。 然后,您需要显式解除绑定,然后重新绑定到DOM中的所有元素(否则最终会绑定被重复)。 每次将input添加到DOM时,都需要重复此过程。
做这个。
$(function(){ var myFunction = function() { alert("myFunction called"); } jQuery(':input').change(myFunction).keyup(myFunction); });
您可以订阅更改和关键事件:
$(function() { $(':input').change(myFunction).keyup(myFunction); });
myFunction
是你想要执行的function:
function myFunction() { alert( 'something happened!' ); }
事实并非如此。 相反,你给他们一个函数,当他们发生时被调用。
$("input").change(function() { alert("Something happened!"); });
写一个函数,并为它们调用它。
function yourHandler(e){ alert( 'something happened!' ); } jQuery(':input').change(yourHandler).keyup(yourHandler);
change()和keyup()事件注册函数返回原始的集合,所以它们可以被链接。