Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery从外部函数调用定义的函数_Javascript_Jquery_Function - Fatal编程技术网

Javascript Jquery从外部函数调用定义的函数

Javascript Jquery从外部函数调用定义的函数,javascript,jquery,function,Javascript,Jquery,Function,嘿,我有一个jQuery函数,如下所示: $.fn.sexyForm = function (style){ $('.sexyform').on('click',function(){ $(this).find('input').trigger('focus'); }); var $input = $('.sexyform'); ****************************************************

嘿,我有一个jQuery函数,如下所示:

$.fn.sexyForm = function (style){
    $('.sexyform').on('click',function(){
        $(this).find('input').trigger('focus');
    });

        var $input = $('.sexyform');
    ****************************************************
    ************* MORE CODE HERE TAKEN OUT *************
    ****************************************************
    function closeBox(element) {
       //console.log("Closing", element);
       //Get the element that needs to be closed
       var $el = $(element);
       //Grab the data we set on it
       var originalData = $el.data('original-styles');
       //console.log(originalData);
       var style = $el.data('style');
       //Reset the input

       $el.find('input').animate({
           left: originalData.startPosInput
       })
       $el.find('span').animate({
           width: originalData.startWidth,
           left: originalData.startPosPlace,
       })
   }
};
我试着从另一个地方这样叫它:

function clearAll() {
    console.log('hi');
    $('.input3').val('');       
    $('.input3').removeClass('form-open');
    closeBox($('.input3'));
    $("span[data-id*='txt']").each(function(index) {
        //enable ALL textboxes
        $(this).css("pointer-events", "auto");
        $(this).fadeTo("fast", 1.0);
        $('#searchTop').text('above');
    });

    $('#schoolSelect').prop('selectedIndex', 0).selectric('refresh');
    $('#roles').prop('selectedIndex', 0).selectric('refresh');
    $('#clearBtn').focus();
}
错误来自关闭框($('.input3')。我尝试了以下几点:

$.fn.sexyForm.closeBox($('.input3'));

这也不管用。我缺少什么?

closeBox
仅在
sexyForm
函数范围内定义,不能在外部使用,您可以尝试将其移动到更高的范围内

功能关闭(元素){
//控制台日志(“关闭”,元素);
//获取需要关闭的元素
变量$el=$(元素);
//抓取我们在上面设置的数据
var originalData=$el.data('original-style');
//控制台日志(原始数据);
var style=$el.data('style');
//重置输入
$el.find('input')。动画({
左:originalData.startPosInput
})
$el.find('span')。设置动画({
宽度:originalData.startWidth,
左:originalData.startPosPlace,
})
}
$.fn.sexyForm=函数(样式){
$('.sexyform')。在('click',function()上{
$(this).find('input').trigger('focus');
});
变量$input=$('.sexyform');
功能关闭盒(元件){
关闭(元素)
}
};
函数clearAll(){
console.log('hi');
$('.input3').val('');
$('.input3').removeClass('form-open');
关闭($('.input3'));
$(“span[data id*='txt'])。每个(函数(索引){
//启用所有文本框
$(this.css(“指针事件”、“自动”);
美元(此).fadeTo(“快速”,1.0);
$('#searchTop')。文本('以上');
});
$('#schoolSelect').prop('selectedIndex',0).selectric('refresh');
$(“#角色”).prop('selectedIndex',0).selectric('refresh');
$('#clearBtn').focus();

}
我可能不太清楚您要找的@steave是什么,但是如果您想在sexyForm中定义closeBox函数,另一种方法是传递某种形式的对象。例如:

$.fn.sexyForm = function(style, BoxObj) {
    // Code here...
    BoxObj.closeBox = function(element) {
    // Any other code...
   }
}
根据定义BoxObj的位置,您可以选择将BoxObj作为参数传递给clearAll:

function clearAll(BoxObj) or () {
   // Code here
   BoxObj.closeBox($('.input3'));
   // More code 
}

但我需要它能够从另一个函数调用它……你说的“从另一个函数调用它”是什么意思?您可以使用我描述的方法从另一个函数调用它。您需要它在
sexyForm
中特别可用吗?是的,我需要它在sexyForm中特别可用。然后您可以在外部范围中定义
close
函数,并在
sexyForm
中定义调用
close
函数的
closeBox
。我已经在我的答案中更新了代码,尝试一下outclose必须在$.fn.sexyForm中,并且我需要能够从$.fn.sexyForm函数的外部调用close。这与我想做的更多。谢谢RoboBear。