【问题标题】:get element, caused change event in javascript获取元素,在 javascript 中导致更改事件
【发布时间】:2012-03-11 14:05:40
【问题描述】:

我想了解onchange 事件处理程序中的哪些控件导致了更改(或模糊)事件。 我尝试使用 jQuery $(":focus") 来达到这个目的,但是

$('.some_class').change(function (e) {
    console.log(e.target);
    console.log($(':focus').get(0)); // always `undefined`.
    /* ......... other code......... */
});

【问题讨论】:

  • 提供整个事件处理程序...
  • $('.some_class').change(function (e) { console.log(e.target); console.log($(':focus').get(0)); .........其他代码......... });
  • @DotNetter 请将代码放入您的答案中

标签: javascript jquery event-handling onchange


【解决方案1】:
$('.some_class').change(function (e) {
console.log(e.target);
console.log($(':focus').); // just remove the .get(0)

}); 去掉.get(0),就可以得到焦点所在的元素了

【讨论】:

  • 我得到了什么?对象 jQuery 为空
  • 如果元素onblur,可以获取元素onfocus
  • 我无法理解。函数get 只返回 jQuery 集合中的对象。因此,如果集合不为空,则调用get(0) 允许我获取焦点元素。那你为什么建议删除它?还是我在某个地方弄错了?
  • 因为当你对元素进行模糊处理时,下次你不会在任何元素上聚焦。 get(0) 不是不合理,因为同时在元素上可以聚焦
【解决方案2】:

在 jQuery 中,this 指代具有事件处理程序的元素,event.target,如果 event 是事件处理程序的参数,则回调将是事件的来源,例如,如果您单击子元素和点击冒泡。

焦点事件在模糊事件之后被触发,因此会有一小段时间没有元素获得焦点。如果你真的需要这个,你可以设置一个短暂的超时来查看另一个input是否在原来的模糊之后几毫秒有焦点。

【讨论】:

  • 是的,就是这样。但问题是this word 指向我的文本框而不是焦点元素。 Event 在某些情况下我只是为了防止它。
猜你喜欢
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
相关资源
最近更新 更多