jquery 将焦点/模糊事件绑定到 AJAX 加载的内容
我有这个脚本,可以很好地添加/删除模糊/专注于文本输入和文本区域的类 - 但是我需要将其绑定到也可以处理通过 AJAX 加载页面后添加的内容:
$(function() {
$('input[type=text], textarea').addClass("idleField"); // reset all ##
$('input[type=text], textarea').bind("focus", function(event){
$(this).removeClass("idleField").addClass("focusField");
if (this.value == this.defaultValue){
this.value = '';
}
if(this.value != this.defaultValue){
this.select();
}
}).bind("blur", function(event){
$(this).removeClass("focusField").addClass("idleField");
if ($.trim(this.value) == ''){
this.value = (this.defaultValue ? this.defaultValue : '');
}
});
});
这不会将事件绑定到新内容- 有什么想法吗?
I have this script which works fine to add / remove a class on blur / focus on text inputs and textareas - however I need to bind it to also work on content added after page load via AJAX:
$(function() {
$('input[type=text], textarea').addClass("idleField"); // reset all ##
$('input[type=text], textarea').bind("focus", function(event){
$(this).removeClass("idleField").addClass("focusField");
if (this.value == this.defaultValue){
this.value = '';
}
if(this.value != this.defaultValue){
this.select();
}
}).bind("blur", function(event){
$(this).removeClass("focusField").addClass("idleField");
if ($.trim(this.value) == ''){
this.value = (this.defaultValue ? this.defaultValue : '');
}
});
});
this is not binding the events to new content - any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要使用
.bind
,而是使用.on()
:Instead of using
.bind
, use.on()
:.bind() 方法适用于当前存在的元素。要将事件处理程序附加到 DOM 中当前存在的元素以及将来可能存在的任何元素,您应该使用 .live() 方法。如果您不希望事件一直冒泡,您还可以使用 .delegate() 方法到 DOM 的顶部。
此外,您可以使用 .toggleClass() 方法在一次函数调用中切换元素上的类。因此,您的代码将是:
The .bind() method is for elements that currently exist. To attach event handlers to elements that currently exist in the DOM and any future elements that might exist you should use the .live() method. You can also use the .delegate() method if you do not want your events to bubble all the way to the top of the DOM.
In addition, you can use the .toggleClass() method to switch classes on your elements in one function call. Thus, your code would be: