1 回答

TA貢獻1784條經(jīng)驗 獲得超7個贊
您的問題是范圍之一。 $(function() {});創(chuàng)建一個閉包,您在該閉包中定義您的變量。閉包外的代碼看不到這些變量。要解決此問題,您有幾個選項,這里有 2 個可行:
1)像這樣將變量移動到閉包之外:
// var
var mb_form_type = mb_mbtheme_js[0],
mb_form_type = '.' + mb_form_type,
mb_get_page_slug = mb_mbtheme_js[1],
mb_redirect = mb_mbtheme_js[2],
mb_redirect_time = mb_mbtheme_js[3],
mb_form_disable = mb_mbtheme_js[4];
// create the script
$(function() {
// trigger the ajax on form type
// $("#mb_ajax_form") + mb_form_type + ( function( mb_ajax_form ) {
$("#mb_ajax_form").change( function( mb_ajax_form ) {
// stop the default function of buttons
mb_ajax_form.preventDefault();
// do the ajax
mb_ajax_form_js();
});
});
// accept the form ID
function mb_ajax_form_js() {
// your code here...omitted for brevity
}
2)像這樣在閉包內(nèi)移動你的函數(shù)(注意,任何調(diào)用mb_ajax_form_js也需要在閉包內(nèi)):
// create the script
$(function() {
// var
var mb_form_type = mb_mbtheme_js[0],
mb_form_type = '.' + mb_form_type,
mb_get_page_slug = mb_mbtheme_js[1],
mb_redirect = mb_mbtheme_js[2],
mb_redirect_time = mb_mbtheme_js[3],
mb_form_disable = mb_mbtheme_js[4];
// trigger the ajax on form type
// $("#mb_ajax_form") + mb_form_type + ( function( mb_ajax_form ) {
$("#mb_ajax_form").change( function( mb_ajax_form ) {
// stop the default function of buttons
mb_ajax_form.preventDefault();
// do the ajax
mb_ajax_form_js();
});
// accept the form ID
function mb_ajax_form_js() {
// your code here...omitted for brevity
}
});
更新:
要使用字符串變量 ( )訪問submitandchange函數(shù)mb_form_type,您需要使用“數(shù)組訪問語法”而不是您嘗試過的點表示法。
作為一個簡單的示例,這將起作用(注意 mb_form_type 不包含.):
var mb_form_type = 'change';
$("#mb_ajax_form")[mb_form_type]( function( mb_ajax_form ) {
alert('This will work using array access syntax');
});
添加回答
舉報