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,它肯定没有执行功能。但适用于项目单击事件。感谢您的及时响应,按预期工作,并将进行更多测试。