Javascript Jquery从外部函数调用定义的函数
嘿,我有一个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'); ****************************************************
$.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。