jQuery - 为多个事件和绑定添加相同的操作

Zub*_*ir1 0 jquery binding

我一直试图找到一种方法为多个事件添加相同的操作.

我将以下操作分配给#comid(这是一个选择菜单).

$("#comid").change(function()
{
    comid = $("#comid").val();
    //alert(comid);

    $('#com_photo').addClass('loading');

    $('#com_photo').load('ajax.php?requestType=ajax&action=get_com_photo&comid=' + comid, function() {
        $('#com_photo').removeClass('loading');
        $('#com_photo img').hide();
        $('#com_photo img').fadeIn(1000);
        alert('Image Loaded.');
    });
});
Run Code Online (Sandbox Code Playgroud)

现在,上面的代码运行良好.当用户从选择菜单中选择一个项目时,触发更改事件并发出ajax请求,并显示图像以及一个提示"Image Loaded"的警告窗口.

但是,如果用户不使用鼠标而是使用键盘keyup/keydown从菜单中进行选择,我希望触发相同的操作.它默认情况下没有这样做,我希望它做但但似乎并非如此,所以我想为keyup或keydown事件分配相同的动作,但我不想写(或复制/粘贴)相同的代码再次.

经过一段时间的搜索我发现了关于bind(),我尝试这样做:

$("#comid").bind('keyup',function(event){
    $("#comid").trigger('change');
}
Run Code Online (Sandbox Code Playgroud)

它工作,但当我使用密钥时,我看到警报窗口两次说"图像已加载",所以我发现该行为不需要,因为它似乎是两次请求.

有什么我做错了吗?还是有更好的替代方案,我想要完成的事情?

提前致谢 :)

Cal*_*lum 8

$("#comid").bind('change keyup', function(){
    ...
});
Run Code Online (Sandbox Code Playgroud)

您可以将函数附加到这样的多个事件.检查文档中的bind,它非常有用.

您可能还想阅读有关直播的内容.它(几乎)与bind相同,但该函数也将应用于任何新创建的(匹配)元素.

编辑:对于您的选择菜单,如果您使用箭头键选择一个选项,该功能将触发两次.在您的情况下,您应该只使用change().不需要Keyup().