jQuery - 在创建后更改输入字段中的文本

时间:2011-08-18 09:44:51

标签: jquery

如何编写一个更改输入字段文本值的脚本,但该字段尚未创建?

在创建输入字段之前加载脚本。它需要知道当创建具有某个类的任何输入时,它将具有一些文本放入其值。可以使用live()完成吗?

澄清一下,事件的顺序是:

1 - 加载了适用于该页面的应用程序范围的JavaScript。这包含以下内容的脚本:

$('.myDiv input').each(function() {
    $(this).val('some text');
});

2 - 现在加载了第二个特定于页面的脚本,该脚本在页面上动态创建输入,没有任何值。 我无法修改此脚本。这很重要,我需要一个不会修改此脚本的解决方案(否则我不会在此处发布)。

$('.myDiv').html('<input type="text" />');

3 个答案:

答案 0 :(得分:1)

是的,live()会做你想要的。只要您使用jQuery动态添加元素,它就会起作用。

The jQuery.live() api is clear on this

每当您想要更改输入字段的值时,使用live()绑定focusblurkeyup

$('.clickme').live('click', function() {
  // Live handler called.
});

更新:假设您在添加之前无法以任何方式更改输入元素。

$('#container').bind("DOMSubtreeModified",function() { 
   $('input.myClass:not(.alreadyChanged)').val("whatever you want to change it to");
   $('input.myClass:not(.alreadyChanged)').addClass('.alreadyChanged');
}

这样,当一个新元素添加到DOM时,您不需要使用live(),该函数会自动触发。

答案 1 :(得分:0)

由于脚本已经加载。

我认为myClass属性应该是

<input style="myClass Styles Here">TEXT is Here</input>

创建时。

答案 2 :(得分:0)

不幸的是,

live()不支持load事件。你能把它放在准备好的活动中吗?

$().ready(function(){ $('.myClass').val('my text');});

你也可以考虑包装jQuery-plugin并在应用插件后立即更改文本。在此处阅读有关扩展jQuery插件的更多信息:Best Way to Extend a jQuery Plugin