使用jQuery时,我希望在引发.change()
或.keyup()
时运行函数。
就像这样。
if ( jQuery(':input').change() || jQuery(':input').keyup() )
{
alert( 'something happened!' );
}
编辑
对不起,我忘了提了。.change()
和.keyup()
都需要一些变量才能在作用域内。
发布于 2011-10-14 00:31:32
您可以通过用空格分隔事件来绑定到多个事件:
$(":input").on("keyup change", function(e) {
// do stuff!
})
docs here。
希望这能有所帮助。干杯!
发布于 2013-09-25 04:15:34
如果您曾经通过AJAX动态生成页面内容或加载内容,下面的示例确实是您应该使用的方法:
body
,因此无论添加、移动、删除和重新添加哪些元素,与指定选择器匹配的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()
和$.off()
而不是其他方法,有几个原因:
$.live()
和$.die()
已被弃用,并在较新版本的jQuery中被省略。$.change()
和$.keyup()
,要么将相同的函数声明传递给每个调用的函数;复制逻辑...这是绝对的,unacceptable.$.bind()
在创建元素时不会动态绑定到元素。因此,如果绑定到:input
,然后将输入添加到DOM,则该绑定方法不会附加到新输入。然后,您需要显式地解除绑定,然后重新绑定到DOM中的所有元素(否则,您最终会得到重复的绑定)。每次将输入添加到DOM时,都需要重复此过程。发布于 2011-10-14 00:30:48
这样做。
$(function(){
var myFunction = function()
{
alert("myFunction called");
}
jQuery(':input').change(myFunction).keyup(myFunction);
});
https://stackoverflow.com/questions/7757293
复制相似问题