簡體   English   中英

在JavaScript函數中調用JQuery函數

[英]Call JQuery function in JavaScript function

我得到了以下JQuery代碼:

文件:code.js

 jQuery(function(){

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

文件:index.html

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

但是我在這里遇到了一個問題:mostrarOdonto()內部的renderSVG()中http://i.gyazo.com/9550a64fc16c7570107706fb2162d84f.png “未捕獲的ReferenceError:renderSvg未定義”

我嘗試了$ renderSVG(); 但不起作用。 有人可以幫助我嗎?

非常感謝!

PD:對不起英語不好

這是由javascript關閉引起的。 它在jQuery調用中是本地的,而在外部則無法訪問。 您可以在此處了解更多信息: MDN文檔

您可以在jQuery函數調用之外聲明對象,以使其全局可用。 即:

function RenderSVG(){
 //Do Stuff
}

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

這確保了它在jquery范圍之外可以訪問,或者如果您確實需要在jQuery中訪問它,則可以采用jQuery插件的方法: 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方法的庫沒有做奇怪的事情。 為了確保我們必須知道您正在使用的庫。

函數renderSVG()是一個局部函數,因為它位於jQuery(function(){ } 。它僅在該范圍內有效,因此不能通過其他范圍訪問。

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

您可以通過這種方式做到這一點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文件。

我認為可以幫助您,這很簡單直接

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

});

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

function mostrarOdonto() {
    renderSVG();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM