如何编写一个更改输入字段文本值的脚本,但该字段尚未创建?
在创建输入字段之前加载脚本。它需要知道当创建具有某个类的任何输入时,它将具有一些文本放入其值。可以使用live()
完成吗?
澄清一下,事件的顺序是:
1 - 加载了适用于该页面的应用程序范围的JavaScript。这包含以下内容的脚本:
$('.myDiv input').each(function() {
$(this).val('some text');
});
2 - 现在加载了第二个特定于页面的脚本,该脚本在页面上动态创建输入,没有任何值。 我无法修改此脚本。这很重要,我需要一个不会修改此脚本的解决方案(否则我不会在此处发布)。
$('.myDiv').html('<input type="text" />');
答案 0 :(得分:1)
是的,live()
会做你想要的。只要您使用jQuery动态添加元素,它就会起作用。
The jQuery.live() api is clear on this
每当您想要更改输入字段的值时,使用live()
绑定focus
或blur
或keyup
。
$('.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