我有几个动态加载的文本区域,当它们变得模糊时似乎没有响应。我使用.post加载它们(它们在php脚本中生成,并作为显示数据返回(。我制作了这个jsfiddle,它可以自己工作,但不在我的页面上。问题可能是文本区域是动态加载的吗?我在SO上的其他地方读到,我应该使用.on((来处理动态加载的元素(我确实使用过它(,但它在我的页面上仍然不起作用。这是jsfidd:中的jQuery代码
$('.crit_desc').on('blur', function () {
var value = $(this).val();
alert(value);
});
将代码更改为:
$(document).on('blur', '.crit_desc', function () {
var value = $(this).val();
alert(value);
});
由于元素是动态加载的,因此在页面加载时,它们需要绑定到DOM中存在的元素。理想情况下,您需要一个比document
更接近动态加载元素的元素来帮助性能。
根据.on((上的文档:
事件处理程序仅绑定到当前选定的元素;他们必须在代码调用.on((时存在于页面上。为确保元素存在并且可以选择,请执行事件中元素的文档就绪处理程序内部的绑定页面上的HTML标记。如果新的HTML正在被注入到页面中,选择元素并在生成新HTML后附加事件处理程序放置到页面中。
如果是动态加载的,请使用livequeryhttp://docs.jquery.com/Plugins/livequery
$('.crit_desc').livequery('blur', function () {
var value = $(this).val();
alert(value);
});
或者检查该模拟";焦点";以及";模糊";在jQuery.live((方法中,因为.live不支持模糊和聚焦