2

我有几个动态加载的文本区域,当它们变得模糊时似乎没有响应。我使用 .post 加载它们(它们在 php 脚本中生成并作为数据返回以供显示)。我做了这个 jsfiddle,它自己工作,但不在我的页面上。问题可能是文本区域是动态加载的吗?我在其他地方读到我应该将 .on() 用于动态加载的元素(并且我确实使用了它),但它仍然无法在我的页面上工作。这是 jsfiddle 中的 jQuery 代码:

$('.crit_desc').on('blur', function () {

    var value = $(this).val();
    alert(value);

});
4

2 回答 2

5

将您的代码更改为:

$(document).on('blur', '.crit_desc', function () {
    var value = $(this).val();
    alert(value);
});

由于您的元素是动态加载的,因此它们需要在页面加载时绑定到 DOM 中存在的元素。理想情况下,您希望元素更接近动态加载的元素,而不是document提高性能。

根据.on() 上的文档:

事件处理程序仅绑定到当前选定的元素;当您的代码调用 .on() 时,它们必须存在于页面上。为确保元素存在并且可以被选择,请在页面 HTML 标记中的元素的文档就绪处理程序内执行事件绑定。如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。

于 2013-02-24T18:04:41.437 回答
0

如果它是动态加载的,请使用 livequery http://docs.jquery.com/Plugins/livequery

$('.crit_desc').livequery('blur', function () {
    var value = $(this).val();
    alert(value);
});

或者在 jQuery .live() 方法中检查这个模拟“焦点”和“模糊”,因为 .live 不支持模糊和焦点

于 2013-02-24T18:13:39.920 回答