2017-08-11 38 views
0

剛剛在jQuery中編寫函數,只是測試水域。如何在不附加任何東西的情況下調用自定義jquery函數

我這只是爲了演示:

(function ($) { 

    $.fn.update_notifications = function(options) { 

     // This is the easiest way to have default options. 
     var settings = $.extend({ 
      // These are the defaults. 
      user_id: 0, 
     }, options); 

     alert('test'); 

    }; 

}(jQuery)); 

其中包括我在一個JS文件的標記之前。我想知道的是,如何在我的html中實際調用它?

我的想法是這樣的:

<script type="text/javascript"> 
jQuery.update_notifications({ 
    user_id: 1 
}); 
</script> 

但是,告訴我「jQuery.update_notifications是不是一個函數」

+1

變化'$ .fn.update_notifications ... '只是'$ .update_notifications ...'。儘管如此,你的例子似乎有點多餘。它只是'$ .extend()'的一個包裝,它不添加任何邏輯。 –

+0

你確定嗎?甚至他們的文檔https://learn.jquery.com/plugins/basic-plugin-creation/說要做到這一點? – NaughtySquid

+2

這就是創建一個要在jQuery對象的實例上調用的插件。 –

回答

0

你怎麼稱呼它選擇的元素上是這樣的:

$("some_element").update_notifications(); 

你可以在這裏找到更多official documentation

+0

所以沒有辦法做到這一點,沒有附加到一個元素?就像在那個例子中,它沒有附加任何東西,它只是使用一個警報。 – NaughtySquid

+1

如果您想創建一個獨立的幫助函數,則根本不需要將其附加到jQuery。 – mdziekon

0

不,功能不是jQuery對象的一部分,但其FN子對象

$.fn.update_notifications(); 

然而,它沒有任何意義的東西添加到jQuery的原型,如果你不是做某事jqueryobjectbased

0

要解決這個問題,你只需要將$.fn.update_notifications更改爲$.update_notifications$.fn命名空間用於將函數附加到jQuery對象的實例。

(function($) { 
 
    $.update_notifications = function(options) { 
 
    var settings = $.extend({ 
 
     user_id: 0, 
 
    }, options); 
 

 
    console.log('test'); 
 
    }; 
 
}(jQuery)); 
 

 
jQuery.update_notifications({ 
 
    user_id: 1 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

話雖這麼說,你的例子是有點多餘的,因爲你剛剛結束現有$.extend()功能,無需添加任何真正的邏輯 - 儘管我認爲這是一項正在進行的工作。

+0

@ freedomn-m想到我最好提一下它,以防萬一:) –

0

如果你的函數與任何DOM元素無關,我建議你不要污染jQuery。你可以很好地聲明這個函數在其他地方(頁面,單獨的JS文件等)。

但是,如果你仍然要做到這一點,你可以嘗試這些

$.update_notifications(); 

$(window).update_notifications(); 

$(document).update_notifications(); 
0

爲什麼你到底延長了jQuery對象?

通常,缺乏這樣做的正當理由,您只需在腳本中編寫一個函數即可。

讓我們假設你有一個正當的理由,並着手:

一旦你的函數綁定到$或更好地創造像$對象。自定義和綁定的功能(和其他自定義的東西,你想綁定到JQuery),你可以使用它像一個正常的功能 - 只能用$。自定義前綴

不知道我理解你的問題,但你在尋找如何運行該函數從HTML以外的使用jQuery?

你在問這樣一個例子嗎?

<p id="onThis" onclick="$.custom.yourFunctionName()">Click me.</p>

也就是說突兀的JS代碼,是不是最好的做法與jQuery的時候。

你想結合,其功能是與元素或單擊處理文檔時已準備好

$(document).ready(function() { 
$('#onThis').on('click', function here); 
// OR // 
$('#onThis').click(function here); 

});

如果沒有理由將其綁定到jQuery的,不這樣做,你只暗示給別人讀你的代碼的東西,不存在;)

相關問題