Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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 JS模块模式-未执行公共函数_Javascript_Jquery_Modular - Fatal编程技术网

Javascript JS模块模式-未执行公共函数

Javascript JS模块模式-未执行公共函数,javascript,jquery,modular,Javascript,Jquery,Modular,$(文档).ready(函数(){ var功能=(函数(){ var项目=$(“#我的特征li”); var showItem=函数(){ currentItem=$(此项); //这里有更多的代码; }; var showItemByIndex=函数(idx){ $.proxy(showItem,items.get(idx)); }; 项目。单击(显示项目); 返回{ showItemByIndex:showItemByIndex }; })(); 功能。showItemByIn

$(文档).ready(函数(){
var功能=(函数(){
var项目=$(“#我的特征li”);
var showItem=函数(){
currentItem=$(此项);
//这里有更多的代码;
};
var showItemByIndex=函数(idx){
$.proxy(showItem,items.get(idx));
};       
项目。单击(显示项目);
返回{
showItemByIndex:showItemByIndex
};
})();
功能。showItemByIndex(0);
});

  • 项目1
  • 项目2

它看起来像是在页面加载时通过行
功能调用了
showItemByIndex
函数。showItemByIndex(0)

问题是
showItemByIndex
实际上没有做任何有用的事情;它为
showItem
(绑定
this
关键字)创建一个代理函数,然后不对其执行任何操作

如果修改该示例以调用新创建的代理函数,那么代码将按预期执行

$(文档).ready(函数(){
var功能=(函数(){
var项目=$(“#我的特征li”);
var showItem=函数(){
currentItem=$(此项);
console.log('Show Item',this)//添加了一些日志记录
};
var showItemByIndex=函数(idx){
$.proxy(showItem,items.get(idx))();//调用此代理函数!
};       
项目。单击(显示项目);
返回{
showItemByIndex:showItemByIndex
};
})();
功能。showItemByIndex(0);
});

  • 项目1
  • 项目2

欢迎来到stackoverflow!我认为如果您将示例中的HTML包含在内,这样我们就可以了解它可能不起作用的原因,这将非常有帮助。@John添加了示例HTML以供参考。您能否详细说明“未执行”一词?例如,如果我调用
feature.showItemByIndex(1)
来选择列表中的第二个元素并执行自定义函数,则它不起作用。它在没有$.proxy(…)@asedsami的情况下工作是的,我已经在页面加载上放置了断点和console.log,它肯定没有执行功能。但适用于项目单击事件。感谢您的及时响应,按预期工作,并将进行更多测试。