0

问题是 jQuery 没有将 CSS 添加到附加的输入中。我还创建了演示http://jsfiddle.net/heY2u/

HTML:

<div id='container'></div>
<input type="text" value="Test1">

JS:

$('input, textarea, select').on('focusin', function () {
    $(this).data('holder', $(this).attr('placeholder'));
    $(this).attr('placeholder', '');
    $(this).css('outline', '#F78181 solid 1px');
});

$('input, textarea, select').on('focusout', function () {
    $(this).attr('placeholder', $(this).data('holder'));
    $(this).css('outline', '');
});

$('<input type = "text" value = "Test2">').appendTo('#container');

alert(123);
4

1 回答 1

1

你需要把这条线:

$('<input type = "text" value = "Test2">').appendTo('#container');

在你的其他 jQuery 之前。它失败了,因为您使用的语法只会将代码应用于 DOM 中已经存在的元素。因此,您需要先将元素添加到 DOM,然后再应用其他代码。

jsFiddle 示例

或者,使用 .on() 的委托语法,例如:

$(document).on('focusin', 'input, textarea, select', function () {

这将允许您将事件绑定到 DOM 中的任何元素,以及稍后动态添加的任何元素。

文档

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

jsFiddle 示例

于 2013-08-25T21:40:38.877 回答