Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 隐藏事件上的Bootstrap 3 popover回调不起作用_Javascript_Twitter Bootstrap 3_Callback_Bootstrap Popover - Fatal编程技术网

Javascript 隐藏事件上的Bootstrap 3 popover回调不起作用

Javascript 隐藏事件上的Bootstrap 3 popover回调不起作用,javascript,twitter-bootstrap-3,callback,bootstrap-popover,Javascript,Twitter Bootstrap 3,Callback,Bootstrap Popover,接下来,我尝试实现一个隐藏的回调函数,但是当show回调完美工作时,没有办法让hidden回调工作。有人能解释为什么会这样吗 我已经创建了一个复制的问题 $(文档).ready(函数(){ var showCb=$.fn.popover.Constructor.prototype.show; $.fn.popover.Constructor.prototype.show=函数(){ showCb.call(这个); if(this.options.showCb){ this.options.s

接下来,我尝试实现一个隐藏的回调函数,但是当
show
回调完美工作时,没有办法让
hidden
回调工作。有人能解释为什么会这样吗

我已经创建了一个复制的问题

$(文档).ready(函数(){
var showCb=$.fn.popover.Constructor.prototype.show;
$.fn.popover.Constructor.prototype.show=函数(){
showCb.call(这个);
if(this.options.showCb){
this.options.showCb();
}
}
var hiddenCb=$.fn.popover.Constructor.prototype.hidden;
$.fn.popover.Constructor.prototype.hidden=函数(){
hiddenCb.调用(此);
if(this.options.hiddenCb){
this.options.hiddenCb();
}
}
$(“[data toggle=popover]”。popover({
showCb:function(){
警报(“showCb”);
},
hiddenCb:function(){
警报(“hiddenCb”);
}
});
})

爆米花示例

hiddenCb
中,原型函数名为
hide
,而不是
hidden
,因此
$.fn.popover.Constructor.prototype.hidden
必须是
$.fn.popover.Constructor.prototype.hide

这些原型函数是
popover
的函数,而不是。有一个方法,但没有方法
隐藏
。您的代码正在工作,因为
popover
调用方法
show
hide
,而不是通过触发事件

实际上,这是一种挂钩/更改默认
show
hide
方法的黑客行为,它可以触发您的函数以及
popover
默认代码,当您想要处理这些事件时,这并不理想

要使其在代码中工作,请将
隐藏
方法更改为
隐藏

$(文档).ready(函数(){
var showCb=$.fn.popover.Constructor.prototype.show;
$.fn.popover.Constructor.prototype.show=函数(){
showCb.call(这个);
if(this.options.showCb){
this.options.showCb();
}
}
var hiddenCb=$.fn.popover.Constructor.prototype.hide;
$.fn.popover.Constructor.prototype.hide=函数(){
hiddenCb.调用(此);
if(this.options.hiddenCb){
this.options.hiddenCb();
}
}
$(“[data toggle=popover]”。popover({
showCb:function(){
警报(“showCb”);
},
hiddenCb:function(){
警报(“hiddenCb”);
}
});
})

爆米花示例

谢谢您的帮助。我仍然有麻烦。我已经用另一个JSFIDLE更新了这个问题,它显示了应用于jQBTK引导程序插件的第二个代码片段。你能看一看吗?@Mark你的问题中没有提到任何东西,你的问题是“Bootstrap 3 popover callback on hidden event not working”,我想我已经回答了为什么你的代码不起作用。所以要回答第二个问题,为什么jQBTK不起作用,这是因为它没有将任何事件绑定到
popover
,您必须更改它的代码,或者使用使用
$.fn.popover.Constructor.prototype.show
$.fn.popover.Constructor.prototype.hide
找到的第一个方法。现在使用
hide
而不是
hidden
,这对您来说不是很有效吗?我没有提到它,因为我试图简化情况。首先,我使用的是普通的popover插件,并且已经在那里试验这个问题,所以我问的是关于popover的问题,而不是关于jQBTK的问题。顺便说一句,您建议使用的第一个代码与我在问题更新中报告的问题相同:回调被堆叠并多次调用(我打开的popover越多,调用的回调就越多…取消popover不会取消回调)。当您遇到问题时,你必须用简化的代码描述整个问题,不要打断/提及你认为是罪魁祸首的部分。你更新的请求“如何优化?”不清楚你在问什么,你的问题是什么,你想要实现什么。在我看来,一切都在那里,我不知道如何解释:我在问一种方法来捕捉popover上的隐藏回调,我的问题是(使用你的建议)回调被堆叠起来,并且一次调用了好几次,我想实现我的要求。我不是英国人,但如果有一点不清楚,告诉我是什么,我会尽力解释得更好。你有没有尝试我的更新答案,如果它起作用?@Christolytras部分…我昨天晚上开始测试,在我的页面中,点击触发器似乎不起作用,必须有一些冲突与其他点击事件配置…所以我刚才设法使它与手动触发器工作。