2016-12-02 87 views
1

出於某種原因,當我調用我的jQuery插件時,初始化函數未被調用,這似乎在我創建的另一個插件上按預期工作。jQuery Plugin初始化函數不執行

插件:

(function($) { 
    $.fn.youtubeVids = function(options) { 
     var settings = $.extend({ 
     num: 1, 
     id: 'UCeNOYP-TQK-3P3JZerCjheQ', 
     elm: null 
    }, options); 

     function initialize() { 
      console.log('dsad'); 
     $.ajax({ 
      url: "channel-videos.php", 
      data: { num: settings.num, id: settings.id }, 
      success: function(data) { 
       if (settings.elm !== null) { 
        console.log("test"); 
       } else { 
        console.log("uh oh"); 
       } 
      }, 
      dataType: "json" 
     }); 
     } 
    }; 
}(jQuery)); 

呼叫轉移到插件:

<script src="/js-src/youtube-min.js"></script> 
<script> 
$("#vid1").youtubeVids({ 
    num: 3, 
    elm: [ "#vid1", "#vid2", "#vid2" ] 
}); 
</script> 

回答

2

youtubeVids函數內的initialize功能永遠不會得到所謂的,所以基本上什麼都不會發生在那裏(除了創建settings變量和initialize功能

您應該致電initialize函數內部:

(function($) { 
 
    $.fn.youtubeVids = function(options) { 
 
    var settings = $.extend({ 
 
     num: 1, 
 
     id: 'UCeNOYP-TQK-3P3JZerCjheQ', 
 
     elm: null 
 
    }, options); 
 

 
    function initialize() { 
 
     console.log('dsad'); 
 
     $.ajax({ 
 
     url: "channel-videos.php", 
 
     data: { num: settings.num, id: settings.id }, 
 
     success: function(data) { 
 
      if (settings.elm !== null) { 
 
      console.log("test"); 
 
      } else { 
 
      console.log("uh oh"); 
 
      } 
 
     }, 
 
     dataType: "json" 
 
     }); 
 
    } 
 
    initialize(); 
 
    }; 
 
}(jQuery)); 
 

 
$("#vid1").youtubeVids({ 
 
    num: 3, 
 
    elm: [ "#vid1", "#vid2", "#vid2" ] 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="vid1"></div>

+0

見我以爲這不過看着我的其他插件,我從來沒有調用函數在那裏,但它的作品,至少我不能找到初始化 –

+0

有幾種方法這樣做。你指的是哪個插件? – Dekel

+0

@MartynBall,它解決你的問題嗎?如果是,請接受答案。謝謝! – Dekel