2012-01-06 74 views
2

我想使用jQuery.fn.extend在我的視圖中註冊一個函數。所以我將它定義在我的Asp MVC3應用程序的_Layoyt.cshtml文件中。以下是該代碼。jQuery.fn.extend,沒有MVC3的方法

<script type="text/javascript"> 
    $.fn.extend({ 
      tagBox :function(options) { } 
     }); 
</script> 

在我看來,我用下面的代碼來調用方法

$(document).ready(function() { 
     $('.tags').tagBox({ maxTagCount: 5, initialTags: [] }); 
    }); 

,但是當我檢查網頁鉻我看到一個錯誤

Uncaught TypeError: Object [object Object] has no method 'tagBox' d.extend._Deferred.f.resolveWithjquery-1.5.1.min.js:19 d.extend.readyjquery-1.5.1.min.js:19 c.addEventListener.A

我在做什麼錯這裏?

回答

1

我想你已經混淆了什麼$.fn.extend或簡單地$.extend用於。這是爲了將一個對象的值重寫爲另一個對象,並確保爲該屬性定義了一個值。我認爲你正在尋找的是一個jQuery插件。這是一個殼。

(function($){ 

    var _defaults = { 
     your:"defaults", 
     you:"Want to extend" 
    }; 

    $.fn.tagBox = function(options){ 

     var _opts = $.extend({}, _defaults, options); 

     return this.each(function(){ 

     }); 
    }; 
})(jQuery);

This article教了我很多的基礎知識,當我第一次開始學習如何寫他們,我經常回去的例子作爲基礎。

+0

感謝您的快速回復。在使用$ .fn.extend之前,我嘗試了這一點,結果是一樣的。這就是爲什麼我將我的代碼更改爲使用$ .fn.extend。我會閱讀你提供的文章,然後再試一次。 – Jayanga 2012-01-06 05:18:37

+0

我再次嘗試了這個錯誤仍然存​​在。我也嘗試了一些不同版本的jQuery,但仍然無法正確調用該函數。 – Jayanga 2012-01-06 10:21:02

+0

你能提供一個js提琴或一個工作的例子嗎? – locrizak 2012-01-06 14:46:11

1

除了locrizak的出色答案,如果你的代碼仍然不工作,這些腳本按照什麼順序出現在呈現的HTML中?

如果$.fn.extend(是在加載jquery lib之前聲明的,它將不起作用。另外,如果在聲明函數擴展之前在視圖中執行$('.tags').tagBox({ maxTagCount: 5, initialTags: [] });,則它將不起作用。這些腳本必須是有序的,像這樣:

  1. 加載jQuery庫
  2. 聲明你的功能擴展
  3. 使用/調用功能擴展

如果這沒有幫助,嘗試張貼的HTML呈現給瀏覽器,以便我們可以檢查並幫助您弄清楚發生了什麼問題。