Jquery .live()函数将事件绑定到错误的DOM元素

Jquery .live()函数将事件绑定到错误的DOM元素,jquery,Jquery,我有以下代码: $('#id').find('select').live('keypress', function (event) { if (event.which === 13) { event.preventDefault(); $(this).closest('.ui-dialog').find('.ui-button:first').click(); } }); 现在,在特定页面上,id='id'的元素不存在。当我打开一个带有其他id的

我有以下代码:

$('#id').find('select').live('keypress', function (event) {
    if (event.which === 13) {
        event.preventDefault();
        $(this).closest('.ui-dialog').find('.ui-button:first').click();
    }
});
现在,在特定页面上,id='id'的元素不存在。当我打开一个带有其他id的jQueryUI对话框,并在对话框中的选择列表上按enter键时,会触发first.UI按钮的单击事件。为什么?

你能试试这个功能吗

$( "body" ).on( "keypress", "#id select", function(event) {
  ...
});

对话框中必须有id='id'的元素。@Wilmer,不,对话框中没有id='id'的元素。页面中任何时候都有id='id'的元素吗?@Wilmer,当用户单击特定链接时,该元素显示在页面上。另外,这是一个单独的div。为什么按键事件绑定到所有对话框?在这个事件函数中放一个console.log'select-keypres'或其他东西,看看它是否被调用。。。默认情况下,可能会单击该按钮。