如果没有document.ready在cfm页面上运行jQuery

时间:2012-03-29 18:31:10

标签: jquery coldfusion

我是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...函数中,或者是否有其他方法。

提前致谢。

2 个答案:

答案 0 :(得分:4)

如果要将处理程序附加到DOM对象,则需要将代码放在$(document).ready()$(window).load()中。话虽这么说,你可以调用脚本块中的代码,该脚本块在你想要操作的元素之后加载,并且也应该有用。但是,最好使用就绪/加载处理程序。

如果您不等待加载DOM,则元素尚不存在。

如果您不想,您不必将所有代码填充到一个准备好的块中。您可以拥有多个$(document).ready()块。一旦文档加载,每个都将被连续调用。

顺便说一句,

$(window).load()等待元素本身加载,例如图像。

答案 1 :(得分:0)

如果您需要操作DOM,则应将代码放在$(document).ready()

  

传递给.ready()的处理程序保证在执行之后执行   DOM准备好了,所以这通常是附加所有其他内容的最佳位置   事件处理程序并运行其他jQuery代码。