我有这个简单的功能:
<script type="text/javascript">
//<![CDATA[
jQuery(function($){
function here(b){alert(b);} ;
here(6);
});
//]]>
</script>
我在页面上有这个按钮:
<button onclick="here(7);">TEST</button>
警告会在页面加载时触发,但不会在按钮单击时触发。如果我用警报替换这里(7),它工作正常。为什么它不适用于功能呢?
艾伦
答案 0 :(得分:4)
因为您的函数是在函数中定义的,所以它的范围有限。要全局访问该功能,必须全局定义。 但,不建议这样做。这就是为什么你使用像jQuery这样的库来避免所有全局变量并保持不引人注意的东西。最适合您的解决方案是将标记更改为此...
<button id="myBtn">TEST</button>
然后以编程方式将click处理程序分配到与定义的函数相同的区域中......
<script type="text/javascript">
//<![CDATA[
jQuery(function($) {
function here(b) { alert(b); };
here(6);
$("#myBtn").click(function() {
here(7);
});
});
//]]>
</script>
行为分离要好得多,你不是吗?
答案 1 :(得分:0)
您正在另一个函数中定义函数here
(请参阅closures)。这意味着函数here
仅在jQuery(function($){
尝试:
<script type="text/javascript">
//<![CDATA[
function here(b){alert(b);} ;
jQuery(function($){
here(6);
});
//]]>
</script>