我对jQuery对话框和处理脚本的方式有点问题。
在对话框html中,我有
<input id="test">
如果我这样做
<script type="text/javascript>
$('#test').val("haha")
</script>
输入后,它会显示出来。如果我将 放在 之前,它就不起作用了。 现在问题是我正在尝试使用单击触发器更改$('#test')的值,我不能!
$('.testbutton').click(function() {
alert();
$('#test').val("haha");
});
警报有效,初始的val替换有效,这意味着没有任何重复或缺失的输入区域。
现在的总脚本,不起作用:
<input type="button" class="testbutton" />
<input type="text" size="10" id="test" name="test" value="">
$('#test').val("currentvalue"); // This works
$('.testbutton').click(function() {
alert();
$('#test').val("haha");
});
更新 关闭对话框然后重新打开对话框,在#test中显示正确的值。这可能是我想念的吗?
答案 0 :(得分:2)
将您的jQuery代码放入$(document).ready(function () {...your code...})
。这将使浏览器为您的页面创建DOM树后执行。否则javascript无法正确搜索/操作DOM元素。它看起来如下:
$(document).ready(function () {
$('.testbutton').click(function() {
$('#test').val("haha");
});
});
<强>更新强>
如果动态加载HTML代码,请使用live
绑定事件处理程序:
$(document).ready(function () {
$('.testbutton').live("click", function() {
$('#test').val("haha");
});
});
答案 1 :(得分:0)
我想你应该将你的代码包装在$(function(){// code here})中;确保您的代码仅在DOM准备就绪时运行。
答案 2 :(得分:0)
问题最终成为测试中的#。由于某种原因,替换使用类标识符而不是id标识符。我想这是因为#将只替换一个实例,并且由于某些原因我还没有发现,对话框中有多个实例(或隐藏的实例)。
感谢你的所有建议!