在JavaScript函数中调用JQuery函数

时间:2014-10-30 05:54:37

标签: javascript jquery html

我得到了这个JQuery代码:

file:code.js

 jQuery(function(){

        function renderSVG(){
            //Something
        };
 });

文件:index.html

<script>
      function mostrarOdonto() {
          renderSVG();
      };
</script>

但我在这里遇到了一个问题: 在mostrarOdonto()中的renderSVG()中http://i.gyazo.com/9550a64fc16c7570107706fb2162d84f.png &#34;未捕获的ReferenceError:未定义renderSvg&#34;

我试过$ renderSVG();但不起作用。有人可以帮帮我吗?

非常感谢!

PD:对不起英语

4 个答案:

答案 0 :(得分:2)

这是由javascript关闭引起的。它在jQuery调用中是本地的,不能在外部访问。您可以在此处详细了解:MDN Documentation

您可以在jQuery函数调用之外声明对象,以使其全局可用。即:

function RenderSVG(){
 //Do Stuff
}

jQuery(function(){
   RenderSVG();
});

这确保了它可以在jquery范围之外访问 或者如果你真的需要它在jQuery中你可以去jQuery插件的路线la:jQuery docs

示例:

(function( $ ) {
    $.fn.renderSVG = function( options ) {
       //Do Stuff with canvas since it would be referenced in this.
    }; 
}( jQuery ));

然后你可以这样称呼:$('#mycanvas').renderSVG({/*options*/});

更新1:

您必须确保在加载jQuery和任何插件后调用代码。 在您的<head>标记中 你应该把<script src=".../jquery.min.js">或者你的文件调用jquery 然后是任何插件脚本... src="jquery.svg.js",然后你输入你的代码:

<script>
   function RenderSVG(){
   }

   //And most important is that you call it after it is ready. In this example
   //I use jQuery(window).load you can also use jQuery(document).ready
   jQuery(window).load(function(){
      RenderSVG();
   });
</script>

如果它仍然不起作用,你必须确保svg方法的库没有做一些奇怪的事情。确保我们必须知道您正在使用的库。

答案 1 :(得分:0)

函数renderSVG()是一个局部函数,因为它在jQuery(function(){ }内。它仅在该范围内有效,因此无法通过其他范围访问。所以试试吧。

<script>
      jQuery(function(){
         function mostrarOdonto() {
             renderSVG();
         };
      };
</script>

答案 2 :(得分:0)

你可以这样做JSFIDDLE LINK

HTML:

 <input type="button" value="go" onclick=" mostrarOdonto();">

<强>脚本:

 $.renderSVG = function() {
  alert("I am calling form jquery");
 };

 $(document).ready(function() {
  alert("function is ready to use now");
 });

 function mostrarOdonto() {
      $.renderSVG();
  };

这应该符合您的要求。 Jquery部分可以进入你的Code.js文件。

答案 3 :(得分:0)

我认为可以帮助你简单直接

$(document).ready(function() {
 mostrarOdonto();

});

 function renderSVG() {
    alert("Testing purpose only");
};

function mostrarOdonto() {
    renderSVG();
};