gpt4 book ai didi

javascript - 在 jQuery .live() 方法中模拟 "focus"和 "blur"

转载 作者:行者123 更新时间:2023-12-03 21:35:57 25 4
gpt4 key购买 nike

更新:从 jQuery 1.4 开始,$.live() 现在支持 focusinfocusout 事件。

<小时/>

jQuery目前1不支持“模糊”或“焦点”作为 $.live() 的参数方法。我可以实现什么类型的解决方法来实现以下目标:

$("textarea")
.live("focus", function() { foo = "bar"; })
.live("blur", function() { foo = "fizz"; });

1。 2009年7月29日,版本1.3.2

最佳答案

工作解决方案:

(function(){

var special = jQuery.event.special,
uid1 = 'D' + (+new Date()),
uid2 = 'D' + (+new Date() + 1);

jQuery.event.special.focus = {
setup: function() {
var _self = this,
handler = function(e) {
e = jQuery.event.fix(e);
e.type = 'focus';
if (_self === document) {
jQuery.event.handle.call(_self, e);
}
};

jQuery(this).data(uid1, handler);

if (_self === document) {
/* Must be live() */
if (_self.addEventListener) {
_self.addEventListener('focus', handler, true);
} else {
_self.attachEvent('onfocusin', handler);
}
} else {
return false;
}

},
teardown: function() {
var handler = jQuery(this).data(uid1);
if (this === document) {
if (this.removeEventListener) {
this.removeEventListener('focus', handler, true);
} else {
this.detachEvent('onfocusin', handler);
}
}
}
};

jQuery.event.special.blur = {
setup: function() {
var _self = this,
handler = function(e) {
e = jQuery.event.fix(e);
e.type = 'blur';
if (_self === document) {
jQuery.event.handle.call(_self, e);
}
};

jQuery(this).data(uid2, handler);

if (_self === document) {
/* Must be live() */
if (_self.addEventListener) {
_self.addEventListener('blur', handler, true);
} else {
_self.attachEvent('onfocusout', handler);
}
} else {
return false;
}

},
teardown: function() {
var handler = jQuery(this).data(uid2);
if (this === document) {
if (this.removeEventListener) {
this.removeEventListener('blur', handler, true);
} else {
this.detachEvent('onfocusout', handler);
}
}
}
};

})();

在 IE/FF/Chrome 中测试。应该完全按照您的预期工作。

更新:拆解现在可以使用。

关于javascript - 在 jQuery .live() 方法中模拟 "focus"和 "blur",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1199293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com