2016-01-21 25 views
0

在一個插件我用的還有下面的代碼:如何從別處觸發這個特定的jQuery綁定代碼?

;(function ($, window, document, undefined) { 
    $.fn.wc_variation_form = function() { 
    var $form = this; 
    $form.on('change', '.variations input:radio', function() { 
     //code which I want to trigger from elsewhere 
    }); 
}); 

從我自己的代碼,我需要觸發位於代碼中//code which I want to trigger from elsewhere是。我可以爲此運行change(),但我不明白上面的代碼中究竟是什麼$form。它是一個函數嗎?如果是這樣,我怎麼能從我自己的代碼上運行這些單選按鈕上的change()

回答

2

$.fn實際上是對jQuery.prototype的引用。所以你在做什麼是增加一個wc_variation_form方法所有 jQuery對象。

在這個函數裏面,this是調用方法的jQuery對象。因此,舉例來說:

$('#myForm').wc_variation_form(); 

在功能方面,this$('#myForm'),因此該事件將被綁定到該功能。由於這是委託事件,因此只有在更改表單中的單選按鈕時纔會觸發。

要觸發事件,您可以在所需的單選按鈕上使用.trigger('change')(或只是.change())。

$('#yourRadioButton').change(); 
+0

感謝@火箭Hazmat這是我以前嘗試,但它不工作,這就是我開始質疑我是否應該在我的表單上運行change()而不是我的單選按鈕。我嘗試了兩種方法,首先嚐試單選按鈕$('input [value =「Every 1 month」]').change();然後我嘗試了$('.variations_form').change(); ,他們都不能工作:( – drake035

+0

@ drake035:你需要在單選按鈕上觸發事件,這是jQuery在運行回調之前要查找的內容,你能用一些HTML來展示一個例子,說明它不起作用嗎?只要你的單選按鈕位於你的表單中(作爲'.variations'的孩子),它應該可以工作。 –

+0

我在全新安裝上測試過,它確實有效,在我的實際項目中出現了一些混亂現象,所以我需要找到它是什麼。謝謝! – drake035