jquery 中 $(document).ready 中function 能否传值

jquery 中 $(document).ready 中function 能否传值

问题描述:

首先,说明一下,$(document).ready 中使用传值的function是没有问题的,但是这样做出了一个奇怪的问题,所以在这里贴出来,请高手解决一下。

为了能传入系统的路径,所以在我的exportTemplate.js 文件中定义了,一个总的方法是readyInit.然后我在自己的jsp文件中调用该方法如下:

[code="javascript"]

    <script type="text/javascript">
        $(document).ready(readyInit("<%=path %>"));     
    </script>

[/code]

这样就看似乎传的值 用alert也能打印,但是问题是在exportTemplate.js 有这样
var select2 = document.getElementById("select2");
通过document.getElementById()方法得到的值都是null。

不知道为何,于是自己修改为不传值的形式:
[code="javascript"]

    <script type="text/javascript">
        $(document).ready(readyInit);       
    </script>

[/code]

这样使用的话就没有这个问题了 document.getElementById()方法得到的值 都是正常的了。
但是感觉自己传值的问题还是没有解决,于是想请教!

另外奇怪的是,就算是不传值,自己如果写成:
[code="javascript"]

    <script type="text/javascript">
        $(document).ready(readyInit());     
    </script>

[/code]

就只是在方法的调用中写了一个()结果是:

通过document.getElementById()方法得到的还都是null。

不理解JavaScript关于这方面的机制,忘解答。

详见jquery文档关于ready的说明:
ready方法接收的参数是[color=red]一个函数的引用[/color]
readyInit()是函数的调用,不是函数的引用

var select2 = document.getElementById("select2");

麻烦你看下最基本的JS

JS执行是从上到下的,
$(document).ready(readyInit());

JQUERY的写法是页面刷新后执行。

而你的JS本身取得就是错的

连ID都取不到还怎么取值?

var select2 = document.getElementById("select2");

这样执行才没有问题。

如果你用了JQUERY 为什么不用 $("#select2")?

假设函数readyInit执行体需要变量path
[code="java"]

var path="<%=path %>"; $(document).ready(readyInit);

[/code]

既然只一个函数的引用作为参数,就无法传参了。
把参数放在外部变量中