在jquery1.9中用$(“selector”)。get(0).focus()替换trigger.focus?

时间:2014-03-18 04:10:40

标签: jquery jquery-1.9 jquery-migrate jquery-trigger

当你在IE中使用.trigger("焦点")时,jQuery赢了""""稍后将发生的异步焦点事件,因此它会触发其中一个,以确保始终如上所述发生焦点事件。这会导致对事件处理程序的两次调用。为了避免这种双重调用 - 但是根本没有调用事件处理程序的风险 - 直接使用DOM焦点方法,例如$(" selector")。get(0).focus()

这是jquery迁移网站所说的。虽然我不清楚每个trigger.focus是否需要用新的实现替换?如果是这样,新代码将是一个简单的按钮。触发焦点?

 $('#btnMove').trigger('focus');

2 个答案:

答案 0 :(得分:0)

您可以使用on method

$('#btnMove').on('focus', handler);

另外,您可以阅读http://api.jquery.com/focus/以及您会找到的备注:

  

尝试将焦点设置为隐藏元素会导致Internet Explorer出错。注意只对可见的元素使用.focus()。要在不将焦点设置到元素的情况下运行元素的焦点事件处理程序,请使用.triggerHandler(" focus")而不是.focus()。

答案 1 :(得分:0)

阅读Order of triggered "focus" events

获取原生DOM元素并在其上调用焦点事件。

$('#btnMove').get(0).focus();

或者

$('#btnMove')[0].focus();

或者 使用纯JavaScript

document.getElementById('btnMove').focus();