我是jQuery的新手,我正在将一个页面从“常规”javascript转换为一个coldfusion页面上的jQuery。页面由存储过程驱动,存储过程根据其结果集更改页面和输入字段数。在我的页面上,输入标签看起来像这样。
<cfinput name="#trim(characteristic_id)#_fund" id="#trim(characteristic_id)#_fund" value="#fund#" size="11" onFocus="getCurrentValue(this)" onblur="checkChange(this,'c')">
<cfinput name="#trim(characteristic_id)#_benchmark" id="#trim(characteristic_id)#_benchmark" value="#benchmark#" size="11" onFocus="getCurrentValue(this)" onblur="checkChange(this,'c')">
onFocus
事件只保存当前值,onBlur
事件检查该值是否已更改,以及是否已将其保存在数组中以供进一步处理。
就个人而言,我觉得jQuery非常适合这种处理,这是我尝试它的主要原因。
对我的问题。现在我将onFocus
事件处理程序替换为:
$("input").focus(function(){
alert($(this).val());
});
简单,但是当我尝试我时,没有任何反应,没有javascript错误,没有。什么都没发生。所以,我编写的所有其他jQuery代码,我都使用了$(document).ready...
,当我使用它时,它运行正常。根据我的阅读,UI在DOM准备好之前呈现,但是为了解决这个问题,coldfusion在其他所有事情之前运行。
我的问题是这个;我是否必须将所有jQuery代码放在$(document).ready...
函数中,或者是否有其他方法。
提前致谢。
答案 0 :(得分:4)
如果要将处理程序附加到DOM对象,则需要将代码放在$(document).ready()
或$(window).load()
中。话虽这么说,你可以调用脚本块中的代码,该脚本块在你想要操作的元素之后加载,并且也应该有用。但是,最好使用就绪/加载处理程序。
如果您不等待加载DOM,则元素尚不存在。
如果您不想,您不必将所有代码填充到一个准备好的块中。您可以拥有多个$(document).ready()
块。一旦文档加载,每个都将被连续调用。
$(window).load()
等待元素本身加载,例如图像。
答案 1 :(得分:0)
如果您需要操作DOM,则应将代码放在$(document).ready()
。
传递给.ready()的处理程序保证在执行之后执行 DOM准备好了,所以这通常是附加所有其他内容的最佳位置 事件处理程序并运行其他jQuery代码。